2018计算导论与程序设计习题课九 D. calc the sum

开始我以为题目那个n是10^100000是打错了的…… Python算这个还卡住了……
后来发现不是,还真就是这么大……因为我开100000的数组RE了,100001就过了,说明这个数据真就有这么长……
思路:第一次当字符数组来读取,得到数位和,然后当int类型来处理(因为就算全是9也不过900000,比int小多了。)
之后的furtherDecode可以用递归来写,其中那个for(;n;n/=10) sum+=n%10我觉得是一种比较简洁的写法。

#include 
int decode(char []);
int furtherDecode(int);
int main(int argc, char const *argv[])
{
     
	int i,t;
	char str[1000000];
	scanf("%d",&t);
	getchar();
	for(i=0;i<t;i++)
	{
     
		gets(str);
		printf("%d\n",decode(str));
	}
	return 0;
}

int decode(char str[])
{
     
	int i,sum=0;
	for(i=0;i<strlen(str);i++)
		sum+=str[i]-'0';
	return furtherDecode(sum);
}
int furtherDecode(int n)
{
     
	if(n<10)
		return n;
	else
	{
     	
		int sum=0;
		for(;n;n/=10) sum+=n%10;
		return furtherDecode(sum);
	}
}

题目描述
在遥远的艾泽拉斯大陆上,有一个十分崇拜数字的种族。
他们认为万物都是由数字组成的, 而且一切的数字最后都能变成一个单独的数码。 比如数字1990,S(1990)=1+9+9+0=19,S(19)=10,S(10)=1.
有一天他们从一个废墟中找到一个远古的羊皮卷轴, 上面写满了密密麻麻的数字, 族长认为卷轴能预言种族的未来。 但是他们无法解读卷轴,你能帮助他们么?

输入格式
一开始是一个数字T(T<=10)表示数据组数。
接下来T行,每行是一个数n.(n<=10^1000000)

输出格式
输出T 行, 每行一个数, 表示羊皮卷轴上的数对应的数码.
输入样例
1
5555
输出样例
2

你可能感兴趣的:(Excited,OJ)