Codeforces Round #555 (Div. 3) AB

A:    http://codeforces.com/contest/1157/problem/A

题意:每次加到10的整数倍之后,去掉后面的0,问最多有多少种可能。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <vector>
 4 #include <string>
 5 #include <set>
 6 
 7 using namespace std;
 8 
 9 int main()
10 {
11     ios::sync_with_stdio(false);
12     cin.tie(0);
13     cout.tie(0);
14 
15     int n;
16     set<int> si;
17     while(cin>>n){
18         si.clear();
19         si.insert(si.end(),n);
20         while(n!=1){
21             n++;
22             while(n%10==0){
23                 n/=10;
24             }
25             si.insert(si.end(),n);
26         }
27         n=2;
28         si.insert(si.end(),n);
29         while(n!=1){
30             n++;
31             while(n%10==0){
32                 n/=10;
33             }
34             si.insert(si.end(),n);
35         }
36         cout<<si.size()<<endl;
37     }
38     return 0;
39 }
View Code

B:   http://codeforces.com/contest/1157/problem/B

题意:有一个很长的字符串,和1-9之间数字的映射关系。问修改其中一段得到的最大的串是什么。(可以进行0次或1次修改)

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <set>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n;
    string s1;
    int mapp[9];
    while(cin>>n){
       cin>>s1;

       string s3(s1);
       for(int i=0;i<9;i++){
            cin>>mapp[i];
       }
       for(int j=0;j<s1.size();j++){
            string s2(s1);
            for(int i=j;i<s1.size();i++){
                    char t=mapp[s1[i]-'1']+'0';
                    if(t>=s1[i]){
                        s2[i]=mapp[s1[i]-'1']+'0';
                    }else{
                        break;
                    }
            }
            if(s2>s3) s3=s2;
       }
       cout<<s3<<endl;
    }
    return 0;
}
View Code

 

posted @ 2019-04-27 11:39  多一份不为什么的坚持  阅读(192)  评论(0编辑  收藏  举报