Codeforces Round #555 (Div. 3)(A,B,C1)补题(C2,E)未补完(D,F,G)

A. Reachable Numbers

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

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→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.

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 (1≤n≤10^9).

Output

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

Examples

input

Copy

1098

output

Copy

20

input

Copy

10

output

Copy

19

Note

The numbers that are reachable from 1098 are:

1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,1098,1099.

原地址在这里

题意:

这题就是给你一个数,然后有一个操作定义位f(x),就是将这个数加一也就是f(x)=x+1,然后如果这个数的结尾是0那么就将这个零删除,然后,问你最多可以得到多少个不同的数,你可以随意的使用f来进行嵌套,知道当这个变成前面出现过的数就结束。

题意:

这题其实最大数不会结果不会很大,那么就可以直接模拟了。

代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std ;

set<int> s ;

int main()
{
    int n ;
    scanf("%d" , &n) ;
    s.clear() ;
    s.insert(n) ;
    int tmp = n + 1 ;
    while(!(tmp % 10)) tmp /= 10 ;
    while(!s.count(tmp))
    {
        s.insert(tmp) ;
        tmp += 1 ;
        while(!(tmp % 10)) tmp /= 10 ;
    }
    printf("%d\n" , s.size()) ;
    return 0 ;
}

B. Long Number

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a long decimal number aa consisting of nn digits from 11 to 99. You also have a function ff that maps every digit from 11 to 99 to some (possibly the same) digit from 11 to 99.

You can perform the following operation no more than once: choose a non-empty contiguous subsegment of digits in aa, and replace each digit xx from this segment with f(x)f(x). For example, if a=1337a=1337, f(1)=1f(1)=1, f(3)=5f(3)=5, f(7)=3f(7)=3, and you choose the segment consisting of three rightmost digits, you get 15531553 as the result.

What is the maximum possible number you can obtain applying this operation no more than once?

Input

The first line contains one integer nn (1≤n≤2⋅1051≤n≤2⋅105) — the number of digits in aa.

The second line contains a string of nn characters, denoting the number aa. Each character is a decimal digit from 11 to 99.

The third line contains exactly 99

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值