链接:https://ac.nowcoder.com/acm/problem/15173
来源:牛客网
题目描述
给你一个数,让他进行巴啦啦能量,沙鲁沙鲁,小魔仙大变身,如果进行变身的数不满足条件的话,就继续让他变身。。。直到满足条件为止。
巴啦啦能量,沙鲁沙鲁,小魔仙大变身:对于一个数,把他所有位上的数字进行加和,得到新的数。
如果这个数字是个位数的话,那么他就满足条件。
输入描述:
给一个整数数字n(1<=n<=1e9)。
输出描述:
输出由n经过操作满足条件的数
示例1
输入
复制
12
输出
复制
3
说明
12 -> 1 + 2 = 3
示例2
输入
复制
38
输出
复制
2
说明
38 -> 3 + 8 = 11 -> 1 + 1 = 2
没啥好说的,就瞎模拟即可
#ifdef debug
#include <time.h>
#include "/home/majiao/mb.h"
#endif
#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <math.h>
#define MAXN ((int)1e5+7)
#define ll long long int
#define INF (0x7f7f7f7f)
#define QAQ (0)
using namespace std;
#ifdef debug
#define show(x...) \ do { \ cout << "\033[31;1m " << #x << " -> "; \ err(x); \ } while (0)
void err() { cout << "\033[39;0m" << endl; }
#endif
template<typename T, typename... A>
void err(T a, A... x) { cout << a << ' '; err(x...); }
int n, m, Q, K;
int get_sum(int N) {
int ret = 0;
while(N) {
ret += N%10;
// show(N%10);
N /= 10;
}
return ret;
}
int main() {
#ifdef debug
freopen("test", "r", stdin);
clock_t stime = clock();
#endif
while(~scanf("%d ", &n)) {
int ans = 0, N;
while(n != (N=get_sum(n))) {
ans ++;
n = N;
}
printf("%d\n", N);
}
#ifdef debug
clock_t etime = clock();
printf("rum time: %lf 秒\n",(double) (etime-stime)/CLOCKS_PER_SEC);
#endif
return 0;
}