题目大意:
一个数的数根是指将该数的各位数字相加,如果结果为一个个位数,则该各位数就是该数的数根,如果结果不止一位,则重复上述动作,将该结果个位数字相加得到一个新结果,如果新结果是个位数则该个位数就是该数的数根,否则重复上述动作,例如24的数根就是6,39个位数字之和为12(非个位数),因此再将12的各位相加得到3,3是一个个位数,因此3就是39的数根。
现有多个测例,每个测例中给出一个数字n(int型正整数,测例以n=0表示结束),对于每个测例都输出n的数根。
注释代码:
/*
* Problem ID : POJ 1519 Digital Roots
* Author : Lirx.t.Una
* Language : C
* Run Time : 0 ms
* Run Memory : 152 KB
*/
#include <stdio.h>
//由数论理论得
//一个数的各位之和为sum
//如果sum % 9 = 0则树根为9否则为sum % 9
int
main() {
char d;//digit,保存每一位数字
int sum;//各位数字之和
int root;//树根
while ( ( d = getchar() ) != '0' ) {
sum = d - '0';
while ( ( d = getchar() ) != '\n' )
sum += d - '0';
printf("%d\n", ( root = sum % 9 ) ? root : 9);
}
return 0;
}
无注释代码:
#include <stdio.h>
int
main() {
char d;
int sum;
int root;
while ( ( d = getchar() ) != '0' ) {
sum = d - '0';
while ( ( d = getchar() ) != '\n' )
sum += d - '0';
printf("%d\n", ( root = sum % 9 ) ? root : 9);
}
return 0;
}
单词解释:
yield:vt, 产出,屈服