| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3602 人关注过本帖, 2 人收藏
标题:一个编程题目,求解题思路,不要求过程,当然有过程更好,望各位高手不吝赐教!
只看楼主 加入收藏
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
10204081632653061224489795918367305
*                                 5
--------------------------------------
51020408163265306122448979591836525

Wrong Answer

[color=white]
2008-05-12 13:54
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
还有10 6结果为
16949152542372881355932203389830508474576271186440677966010
我要再下个计算器……这个大数计算器有Bug……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 13:57
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
16949152542372881355932203389830508474576271186440677966010 *6
101694915254237288135593220338983050847457627118644067796060

Wrong Answer

[color=white]
2008-05-12 14:02
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
Orz发现一个Bug,马上改………………
没想到不做OJ都会有WA的噩梦啊………………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 14:07
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
5 5:102040816326530612244897959183673469387755
p是多位数的时候还有Bug,继续调试……

[[it] 本帖最后由 StarWing83 于 2008-5-12 14:22 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 14:21
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
#include <stdio.h>
int main()
{
    int p,q;
    while (scanf("%d%d",&p,&q)!=EOF)
    {
        int a[1000]={0},res=p,i=0,j;

        //将p送往a,并计算p的位数为j
        for(j=0;res;a[j++]=res%10,res/=10);
        
        //运算结束时,最高位(res)的值为p
        while(res!=p)
        {
            //计算第i个结果,同时应该是第i+j个数位的值
            res=a[i]*q+res/10;
            //赋值
            a[i+j]+=res%10;
            i++;
        }
        while (i--)
            printf("%d",a[i]);
        printf("\n");
    }
}


搞不定了……飞燕帮忙看看,计算一位p的时候结果正确,但是如果p不止一位了,终止条件似乎就没有作用了。比如10 6,老是在没算完的时候就停止计算了……当i=74的时候,a[i]=7,原res=41,1已经赋值给a[i+j-1]=a[75],res=7*6+41/10=46,并将个位6赋值给a[i+j]=a[76]。然后i=75,a[i]=1(73计算出来的),原res=46,res=1*6+46/10=10,这个10是要赋值给a[i+j]和a[i+j+1]的,按理说这个时候应该计算完了,从第78位开始是1,77是0,然后从76开始就应该是答案61769616026711185308848080133555926544240400667779632721202003338898163606010
但是这个数字乘以6的结果是:370617696160267111853088480801335559265442404006677796327212020033388981636060,前面多了370三个数字……为什么呢?纠结……真正的停止计算的条件是什么啊?飞燕教一下………………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 15:16
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
翅膀你好幸福,我刚又被老师喊过去骂了,大数相乘可不可以考虑字符数组做..像2进制那样处理呢?

学习需要安静。。海盗要重新来过。。
2008-05-12 15:25
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
回LS:不行,像二进制处理的话转换会很麻烦。只能用BCD或者其他十进制编码来做……虽然慢一点……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 15:32
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
判断条件改为        while(!(res==p && a[i]==0)),10 6计算出了正确的值,但是这个条件是临时的,用这个条件7 5出错……恩……我在考虑        while(!(res==p && a[i]==p%10)),算了,上课去,概率课的时候慢慢算……

01669449081803005008347245409015025041736227045075125208681135225375626043405676
12687813021702838063439065108514190317195325542570951585976627712854757929883138
56427378964941569282136894824707846410684474123539232053422370617696160267111853
08848080133555926544240400667779632721202003338898163606010

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 15:36
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
#include <stdio.h>
int main()
{
    int p,q;
    while (scanf("%d%d",&p,&q)!=EOF)
    {
        char a[1000]={0};
        int res=p,i=0,j;

        for(j=0;res;a[j++]=res%10,res/=10);

        for(;!(res==p && a[i]==p%10);i++)
        {
            res=a[i]*q+res/10;
            a[i+j]=res%10;
        }
        if(a[i]==0)printf("%d",a[i]);
        while (i--)
            printf("%d",a[i]);
        printf("\n");
    }
}


给出一个暂时比较满意的程序……上课时再想……奔了先……

[[it] 本帖最后由 StarWing83 于 2008-5-12 15:40 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-12 15:39
快速回复:一个编程题目,求解题思路,不要求过程,当然有过程更好,望各位高手不吝赐 ...
数据加载中...
 
   



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

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