CF1157A. Reachable Numbers
Let's denote a function f(x)f(x) in such a way: we add 11 to xx , then, while there is at least one trailing zero in the resulting number, we remove that zero. For example,
- f(599) = 6f(599)=6 : 599 + 1 = 600 \rightarrow 60 \rightarrow 6599+1=600→60→6 ;
- f(7) = 8f(7)=8 : 7 + 1 = 87+1=8 ;
- f(9) = 1f(9)=1 : 9 + 1 = 10 \rightarrow 19+1=10→1 ;
- f(10099) = 101f(10099)=101 : 10099 + 1 = 10100 \rightarrow 1010 \rightarrow 10110099+1=10100→1010→101 .
We say that some number yy is reachable from xx if we can apply function ff to xx some (possibly zero) times so that we get yy as a result. For example, 102102 is reachable from 1009810098 because f(f(f(10098))) = f(f(10099)) = f(101) = 102f(f(f(10098)))=f(f(10099))=f(101)=102 ; and any number is reachable from itself.
You are given a number nn ; your task is to count how many different numbers are reachable from nn .
输入输出格式
输入格式:
The first line contains one integer nn ( 1 \le n \le 10^91≤n≤109 ).
输出格式:
Print one integer: the number of different numbers that are reachable from nn .
输入输出样例
19
题意:
有一个函数f(x)f(x),效果是将x+1x+1后,去掉末尾所有的00,例如:
f(599)=6f(599)=6,因为599+1=600→60→6599+1=600→60→6
f(7)=8f(7)=8,因为7+1=87+1=8
f(9)=1f(9)=1,因为9+1=10→19+1=10→1
f(10099)=101f(10099)=101,因为10099+1=10100→1010→10110099+1=10100→1010→101
我们可以多次进行函数f(x)f(x)的运算,从而让一个数xx转换为另一个数,例如1009810098可以转换为102102,因为f(f(f(10098)))=f(f(10099))=f(101)=102f(f(f(10098)))=f(f(10099))=f(101)=102。
你需要做的是给你一个数nn,求出nn经过多次函数f(x)f(x)的计算,能转换为几个不同的数(包括自身)?
思路:直接模拟即可,将这个数++,如果后面有0,将零去掉,当某个数字重复时一定会绕回去,所以此时终止就行
可以用c++ set中的insert函数,因为insert函数不会插入重复值,所以可以利用insert作为结束条件
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include<cstdio> #include<set> #include<iostream> using namespace std; set< int >s; int main() { int x; cin>>x; s.insert(x); while (x != 0){ x++; while (x % 10 == 0){ // 去掉0 x /= 10; } int n = s.size(); s.insert(x); if (s.size() == n){ //判断终止的条件,一开始n与s.size()总是差着一个值,如果有重复条件则s.size()不增加,n就等于s.size() cout<<n<<endl; return 0; } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步