http://acm.pku.edu.cn/JudgeOnline/problem?id=1519一看这道题就笑了,呵呵,能这么简单? 这不是侮辱我的智商么? 五分钟之内完成代码如下:
1
#include"stdio.h"
2
void main()
3![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
4
int n;
5
int root;
6
while(scanf("%d",&n)&&n!=0)
7![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
8
root=100;
9
10
while(root>=10)
11![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
12
root=0;
13
while(n!=0)
14![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
15
root+=n%10;
16
n=n/10;
17
}
18
n=root;
19
20![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
21
}
22![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
23![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
24
printf("%d\n",root);
25![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
26
}
27![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
28
}
29![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
自己测试了几组简单的数据,都通过了,欣喜若狂,
激动地提交,结果WA了...
郁闷了半天,把int 改成long ,仍然WA...
仔细阅读题目,发现原来题目并没有限制输入数字的范围..汗,也就是说,可以输入好几十位的整数. 真是BT.
怎么办? 看来只能改用字符串接受数据了.
由于有内存限制,字符数组的大小不能太大.
又花了n久,终于ac
代码如下
1
#include"stdio.h"
2
char *ch=new char[30];
3![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
4
long int input()
5![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
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![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
12
return sum;
13
}
14![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
15
void main()
16![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
17
long n;
18
long root;
19![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
20
n=input();
21
while(n!=0)
22![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
23
root=32767;
24
25
while(root>=10)
26![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
27
root=0;
28
while(n!=0)
29![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
30
root+=n%10;
31
n=n/10;
32
}
33
n=root;
34
35
}
36![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
37![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
38
printf("%ld\n",root);
39
n=input();
40![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
41
}
42![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
43
}