2471: Jacky888的数字

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:16 解决:4

题目描述

定义f变换是将一个数变为它所有数位上数字的和

给你一个数,对其不断进行f变换直到其 < 10

Jacky888想知道这个数最终变成几

输入

一行一个正整数,表示最初的数字

输出

一个数,表示最终的数字

样例输入 复制

样例一:
19

样例二:
998244353

样例输出 复制

样例一:
1

样例二:
2

提示

对于20%的数据,n ≤ 10
对于60%的数据,n ≤ 100000
对于80%的数据,n ≤ 1018
对于100%的数据,n ≤ 101000
#include 
#include 
char str[1005];
int res[1005];
int main() {
	//freopen("modify.in", "r", stdin);
	//freopen("modify.out", "w", stdout);
	int i, j, cnt, len, sum = 0;
	scanf("%s", str);
	len = strlen(str);
	for(i = 0; i < len; i++)
		sum += (str[i] - '0');
	while(1) {
		if(sum < 10) {	
			printf("%d\n", sum); 
			break; 
		}
		memset(res, 0, sizeof(res));
		cnt = 0;
		while(sum > 0) {
			res[++cnt] = sum%10;
			sum /= 10;
		}
		sum = 0;
		for(i = 1; i <= cnt; i++)
			sum += res[i];
	}
	return 0;
}