• Codeforces1157A(A题)Reachable Numbers


    A. 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=600606599+1=600→60→6;
    • f(7)=8f(7)=8: 7+1=87+1=8;
    • f(9)=1f(9)=1: 9+1=1019+1=10→1;
    • f(10099)=101f(10099)=101: 10099+1=10100101010110099+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.

    Input

    The first line contains one integer nn (1n1091≤n≤109).

    Output

    Print one integer: the number of different numbers that are reachable from nn.

     1 #include<bits/stdc++.h>
     2 #include<set>
     3 using namespace std;
     4 typedef long long ll;
     5 int f(int x) {
     6     while((x+1)%10==0) {
     7         x=(x+1)/10-1;
     8     }
     9     x=x+1;
    10     return x;
    11 }
    12 int main() {
    13     ll n,cnt=0;
    14     bool flag=true;
    15     set <int > d;
    16     cin>>n;
    17     ll a=n;
    18     d.insert(a);
    19     while(flag) {
    20         a=f(a);
    21         cnt++;
    22         for(set<int>::iterator it=d.begin(); it!=d.end(); it++) {
    23             if(*it==a) {
    24                 cout<<cnt;
    25                 return 0;
    26             }
    27         }
    28         d.insert(a);
    29     }
    30 }

    思路分析:先编写去尾数0的函数,然后将每次调用函数后的值存入集合,遍历集合,要新加入集合的数等于集合内有的数就退出并同时输出集合元素个数。

  • 相关阅读:
    [Vue] #常见开发场景 #条件渲染#手动挂载 #组件方法的值驱动执行
    [JS高程] Typed Array 定型数组
    [JS高程]JavaScript中的RegExp对象
    [JS高程] Map 和 Set
    [JS高程] JavsScript 常用数组方法总结
    [JS高程] 字符串模式匹配方法
    自动化集成:Pipeline整合Docker容器
    自动化集成:Docker容器入门简介
    自动化集成:Jenkins管理工具详解
    分布式系统中,权限设计实践
  • 原文地址:https://www.cnblogs.com/yuanhang110/p/11239655.html
Copyright © 2020-2023  润新知