最近zyz大佬喜欢上了个位数,所以他讨厌除了个位数之外的所有数,于是他看到一个大于9的数,便用其数位之和去代替这个数,如果位数仍然大于9,则继续重复上述步骤,直到其小于10为止。
例如:13421 -> 1+3+4+2+1 = 11 -> 1+1 = 2
输入格式:
一个非负整数(int范围内)。
输出格式:
经过变换后的答案。
输入样例:
在这里给出一组输入。例如:
19260817
输出样例:
在这里给出相应的输出。例如:
7
结尾无空行
法一,不知道为什么有一个点过不了
#include <stdio.h>
int min(int N){
int sum = 0;
while(N != 0){
sum += N %10;
N = N /10;
}
return sum;
}
int main()
{
int N = 0;
int sum = 0;
scanf("%d",&N);
sum += min(N);
if(sum > 0 && sum <=9){
printf("%d",sum);
}else{
sum = min(sum);
if(sum > 0 && sum <=9){
printf("%d",sum);
}else{
sum = min(sum);
if(sum > 0&& sum <=9){
printf("%d",sum);
}else{
sum = min(sum);
if(sum > 0&& sum <=9){
printf("%d",sum);
}else{
sum = min(sum);
if(sum > 0&& sum <=9){
printf("%d",sum);
}
}
}
}
}
return 0;
}
法二(几天后想到的)
#include <stdio.h> int main() { int x = 0; scanf("%d",&x); int sum = 10; while(sum >=10) { sum = 0; while(x > 0) { sum += x % 10; x /= 10; } x = sum; } printf("%d",sum); return 0; }
感觉简洁了不少,有逻辑感了