/* 时间:2014.2.16 目次: 题目1124:Digital Rootsac.jobdu.com/problem.php?pid=1124 */ #include <stdio.h> #include <string.h> int main() { char str[10001]; int i, t; while(~scanf("%s", str), str[0] - ‘0‘) { while(strlen(str) > 1) { for(i=1;str[i];i++) { t = str[i] - ‘0‘ + str[i-1] - ‘0‘; str[i-1] = t % 10 + ‘0‘; str[i] = t / 10 + ‘0‘; }//56,str[0] = 5,str[1] = 6, 运行一次后,str[0] = 1,str[1] = 1,在运行后str[0]=2,str[0]=0,故结束 (str[strlen(str) - 1] ==‘0‘)&&(str[strlen(str) - 1] = ‘\0‘);//结尾要处理 } printf("%d\n", str[0] - ‘0‘); } return 0; } /* ---------------- 24 思路:1.由于数可能很大故用了字符数组 6 56 2 ---------------- */
原文:http://blog.csdn.net/z_x_b5/article/details/19285375