题目背景
建议使用 PyPy3 提交本题。
题目描述
小蓝有一个整数 n。每分钟,小蓝的数都会发生变化,变为上一分钟的数 减去上一分钟的数的各个数位和。
例如,如果小蓝开始时的数为 23,则下一分钟变为 23−(2+3)=18,再下一分钟变为 18−(1+8)=9,再下一分钟变为 9−9=0,共经过了 3 分钟变为 0。
给定一个正整数,请问这个数多少分钟后变为 0。
输入格式
输入一行包含一个整数 n。
输出格式
输出一个整数,表示答案。
输入输出样例
输入 #1复制
23
输出 #1复制
3
说明/提示
对于 30% 的评测用例,1≤n≤1000;
对于 60% 的评测用例,1≤n≤106;
对于所有评测用例,1≤n≤109。
按题意模拟代码过程就行了
#include <bits/stdc++.h>
using namespace std;
int sum(int n)
{
int sum = 0;
while (n)
{
sum += n%10; //每次都拿最后一位加起来
n /= 10; //舍弃最后一位
}
return sum;
}
int main()
{
int n; //10^9int够了
cin >> n;
int cnt = 0;
while (n)
{
n -= sum(n);
cnt++;
}
cout << cnt << endl;
return 0;
}