HDOJ1013
题目
代码1:常规解法
#include<stdio.h>
#include<string.h>
int main()
{
char number[100000];
int sum, m, i, n;
while(gets(number))
{
sum = 0;
for(i=0;i<strlen(number);i++)
{
sum = sum+(number[i]-'0'); //number数组里的每一位数字相加
}
if(sum==0)
{
break;
}
else
{
while(sum>=10) //直到和小于10,结束循环
{
n = sum;
sum = 0;
while(n>0)
{
m = n%10;
sum = sum+m;
n = n/10;
}
}
printf("%d\n", sum);
}
}
}
代码2:九余数定理
#include<stdio.h>
#include<string.h>
int main()
{
char number[100000];
int sum, m, i, n;
while(gets(number))
{
sum = 0;
for(i=0;i<strlen(number);i++)
{
sum = sum+(number[i]-'0');
}
if(sum==0)
{
break;
}
else
{
n = (sum-1)%9+1; //一个数的所有数字的和与数根之间的关系式
printf("%d\n", n);
}
}
}
Conclusion
可以多多查阅资料,了解一道题的不同解法。