ACM PKU 1519 Digital Roots 简单隐藏陷阱

http://acm.pku.edu.cn/JudgeOnline/problem?id=1519
一看这道题就笑了,呵呵,能这么简单? 这不是侮辱我的智商么? 五分钟之内完成代码如下:
 1#include"stdio.h"
 2void main()
 3{
 4    int n;
 5    int root;
 6    while(scanf("%d",&n)&&n!=0)
 7    {
 8        root=100;
 9        
10        while(root>=10)
11        {
12            root=0;
13        while(n!=0)
14        {
15        root+=n%10;
16        n=n/10;
17        }

18        n=root;
19   
20
21        }

22
23
24        printf("%d\n",root);
25
26    }

27
28}

29
自己测试了几组简单的数据,都通过了,欣喜若狂,
激动地提交,结果WA了...
郁闷了半天,把int 改成long ,仍然WA...
仔细阅读题目,发现原来题目并没有限制输入数字的范围..汗,也就是说,可以输入好几十位的整数. 真是BT.
怎么办? 看来只能改用字符串接受数据了.
由于有内存限制,字符数组的大小不能太大. 
又花了n久,终于ac
代码如下
 1#include"stdio.h"
 2char *ch=new char[30];
 3
 4long int input()
 5{
 6     long int i,sum=0;
 7     scanf("%s",ch);
 8     if(ch[0]=='0'return 0;
 9     for(i=0;ch[i]!=0;i++)
10         sum+=ch[i]-'0';
11
12     return sum;
13}

14
15void main()
16{
17    long n;
18    long root;
19
20    n=input();
21    while(n!=0)
22    {
23        root=32767;
24        
25        while(root>=10)
26        {
27            root=0;
28        while(n!=0)
29        {
30        root+=n%10;
31        n=n/10;
32        }

33        n=root;
34   
35        }

36
37
38        printf("%ld\n",root);
39        n=input();
40
41    }

42
43}

posted on 2007-09-16 04:28 流牛ζ木马 阅读(751) 评论(2)  编辑 收藏 引用

评论

# re: ACM PKU 1519 Digital Roots 简单隐藏陷阱 2007-11-01 16:57 Run&Run

不用那么复杂,只要边累加边模9就AC了  回复  更多评论   

# re: ACM PKU 1519 Digital Roots 简单隐藏陷阱 2008-04-02 11:11 Little Bird

Me Too,就是一次不过有点爽,导致直接上了一个 char s[30000]  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

公告

MY Email/MSN :mars1021@163.com QQ : 27402040 流牛ζ木马

常用链接

留言簿(6)

随笔档案

相册

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜