链接:zoj 1115 或 hdoj 1013 或poj 1519
虽说是水题,却几经波折才搞定。该题目中的数字可能非常大,所以不能使用整型数,只能采用字符变量
代码如下:
#include <stdio.h>
int digitalRoot(int n);
int digitSum(int n);
int main(void)
{
char c;
int sum;
while( (c = getchar()) != EOF)
{
if(c == '0')
break;
sum = 0;
while(c != '\n' && c != EOF)
{
sum += c - '0';
c = getchar();
}
printf("%d\n",digitalRoot(sum));
if( c == EOF)
break;
}
return 0;
}
int digitalRoot(int n)
{
int sum = digitSum(n);
while(sum >= 10)
sum = digitSum(sum);
return sum;
}
int digitSum(int n)
{
int sum;
for(sum = 0; n > 0; n /= 10)
sum += n % 10;
return sum;
}
本文介绍了一种解决大数数字根问题的方法,通过字符处理而非整型数避免了溢出问题。代码实现了从输入读取数字并计算其数字根的过程,包括逐位累加及进一步简化直到得到单个数字。
606

被折叠的 条评论
为什么被折叠?



