#P1857. Jacky888的数字

Jacky888的数字

Description

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

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

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

Input Format

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

Output Format

一个数,表示最终的数字

样例一:
19

样例二: 998244353


样例一:
1</p>

样例二: 2

Hint

对于20%的数据,n ≤ 10
对于60%的数据,n ≤ 100000
对于80%的数据,n ≤ 1018
对于100%的数据,n ≤ 101000
#include <stdio.h>
#include <string.h>
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;
} 

Source

字符串 数学 模拟 原创 月赛 黄级