P10985 [蓝桥杯 2023 国 Python A/Java A] 整数变换
题目背景
Python 选手建议使用 PyPy3 提交本题。
题目描述
小蓝有一个整数 。每分钟,小蓝的数都会发生变化,变为上一分钟的数减去上一分钟的数的各个数位和。
例如,如果小蓝开始时的数为 ,则下一分钟变为 ,再下一分钟变为 ,再下一分钟变为 ,共经过了 分钟变为 。
给定一个正整数,请问这个数多少分钟后变为 。
输入格式
输入一行包含一个整数 。
输出格式
输出一个整数,表示答案。
输入输出样例 #1
输入 #1
23
输出 #1
3
说明/提示
对于 的评测用例,;
对于 的评测用例,;
对于所有评测用例,。
题目分析
题目要求统计多少分钟后变为0。按照模拟对的思路进行处理,由于次数未知,所以可以使用while循环,判断数值不为0的时候就重复执行,内部每次减去数值的各数位和。
代码实现
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 1e5 + 5;
int count(int x){//统计x的各数位和
int sum=0;
while(x){
sum+=x%10;
x/=10;
}
return sum;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int x;
cin>>x;
int cnt=0;
while(x){//循环,直到数字变为0
x-=count(x);//减去数位和
cnt++;//统计分钟数
}
cout<<cnt;
return 0;
}