问题描述
小蓝有一个整数 n
。每分钟,小蓝的数都会发生变化,变为上一分钟的数减去上一分钟的数的各个数位和。
例如,如果小蓝开始时的数为 23
,则:
- 下一分钟变为:23 − (2 + 3) = 18
- 再下一分钟变为:18 − (1 + 8) = 9
- 再下一分钟变为:9 − 9 = 0
共经过了 3 分钟变为 0。
给定一个正整数,请问这个数多少分钟后变为 0。
输入格式
输入一行包含一个整数 n
。
输出格式
输出一个整数,表示答案。
样例输入
in
23
样例输出
out
3
评测用例规模与约定
- 对于 30% 的评测用例,1 ≤ n ≤ 1000
- 对于 60% 的评测用例,1 ≤ n ≤ 10^6
- 对于所有评测用例,1 ≤ n ≤ 10^9
c++代码
cpp
#include<bits/stdc++.h>
using namespace std;
int change(int x) {
int sum = x;
while(x > 0) {
sum -= x % 10;
x /= 10;
}
return sum;
}
int main() {
int n, cont = 0;
cin >> n;
while(n > 0) {
cont++;
n = change(n);
}
cout << cont;
return 0;
}//by wqs