标签:print roots 题目 string nbsp class single str repeat
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1013
题目类型:
数论
题意概括:
把一个数的每一位数字都相加,如果和大于10,则再次进行上一步操作,直到和小于10,后输出。
题目:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 78428 Accepted Submission(s): 24527
在刚拿到这道题的时候,年轻的我直接用int,结果给我一个TLE,后来用了long long 结果依旧,最后换成字符串类型的,直接AC
# include <stdio.h> # include <math.h> # include <string.h> int main () { int l,sum,ret,i; char a[1200]; while(scanf("%s",a)) { l=strlen(a); if(l==1 && a[0]==‘0‘) break; sum=0; for(i=0;i<l;i++) sum+=a[i]-‘0‘; while(sum>=10) { ret=0; l=(int)log10(sum)+1; for(i=0;i<l;i++) { ret+=sum%10; sum/=10; } sum=ret; } printf("%d\n",sum); } return 0; }
标签:print roots 题目 string nbsp class single str repeat
原文地址:http://www.cnblogs.com/love-sherry/p/6941373.html