| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1482 人关注过本帖
标题:关于一道题的解法和我解法的错误之处
只看楼主 加入收藏
wuganglaoda8
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-8-15
收藏
得分:0 
答案是错的吧
2009-08-20 18:21
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:10 
x=(int)((float)x/0.8)+1;
你的算法就不对,x要先减1,除5,再乘4。
你的是,x乘5,除四,再减1,这是什么得数?不对题呀。
应该是(x-1)*0.8 ,

这是你的程序,
#include<stdlib.h>
#include<stdio.h>
main()
{
    int x,y,z,n;
 
 
      for(x=1;x<=100000;x++)
      {
                    
        for(n=1;n<=5;n++)
        {
         x=(int)((float)x/0.8)+1; /*还有这里x重新赋值了。假如这里的for循环结束想过x是几吗,外一层
                                     的for再接循环是不是出问题了。*/
        y=x;
           if(y%5==1)  
            {
                      z++;  /*z也没赋初值*/
            }
         }
         
       if(z==5) break;   /*还有第二个for循环结束z不等于5时有没有得新赋初值,*/

 
 
       }
    printf("%d\n",x);
system("pause");  
}  

你的另一个程序问题更严重,等你解决一个思路再想第二个吧,
你的问题不在代码上,是程序运行时怎么走的,还有最重要的是要解决问题的方法都没算对。
你说要说你错以哪,所以就像老师教小朋友一样的说了。呵呵,别介意。
之前给你的代码你看下跟踪下也会明白的。

努力—前进—变老—退休—入土
2009-08-20 23:36
zkkpal
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-26
收藏
得分:0 
x=(int)((float)x/0.8)+1;
我这个算法的意思是,x是最后的钱,往上加
你程序的 y=(int)(((float)x/4)*5+1);
这个不和我的意思一样么
2009-08-21 10:47
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
哦,我看错了,你算法也是对的,
那你程序有没有改成功呢?

努力—前进—变老—退休—入土
2009-08-21 14:49
zkkpal
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-26
收藏
得分:0 
貌似改完了之后还是有问题,麻烦指点
#include<stdlib.h>
#include<stdio.h>
main()
{
    int x,y,s,m,n;

      for(s=1;s<=100000;s++)
      {
        m=0;           
         for(n=1;n<=5;n++)
          {
         
            x=(int)((float)x/0.8)+1;
            y=x;
            
              if(y%5==1)
                {
                      m++;
                }
           }
        
       if(m==5) break;
 
       }
    printf("%d\n",x);
 system("pause");
}

得出结果看起来应该是越界了
2009-08-21 20:03
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:0 
答案错了,3121的答案应该是第五个人也拿走1分然后分成五分,跟会计没什么关系。如果会计回来正好能分成5份,那么答案应该是15625.

To  four  years  in  each  other's
2009-08-21 22:31
zkkpal
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-26
收藏
得分:0 
如果答案是15625,在分的第一次就出错了
3121绝对是准确答案,你自己演算下
2009-08-22 09:51
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:0 
5个人拿走5次就是5的5次方减4,你再加上会计回来的那次,应该是第六次了就是5的6次方。你自己想下过程。

To  four  years  in  each  other's
2009-08-22 10:20
zkkpal
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-26
收藏
得分:0 
你不要忘记了每次分5份完还会多一元,每人还会拿走那一元
2009-08-22 11:57
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:0 
楼主,其实这个问题,已经被问过N多次了,再给你解释一遍。
1.第一个来拿钱的时候,把钱分成五份,多了1元,我在旁边借给他4元放到总钱数里,正好够平分5份。
  第一个人走后,我在总钱数里,拿走我的4元。
2.第二个人来拿钱的时候遇到相同的问题,我同样借给他4元,正好平分成5份,他拿走自己的一份。
  我拿走我的4元钱。
3.第三人同上。
4.第四人同上。
5.第五人同上。
6.会计回来了,刚好能把剩下的钱分成5份,其实这是第六次分钱。
所以,你的答案3121是错误的答案。

To  four  years  in  each  other's
2009-08-23 10:30
快速回复:关于一道题的解法和我解法的错误之处
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016427 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved