标签:第一个 std 一个 cin 字符串 div 字符 size ==
/*
题意是一直运算,直到运算结果没有重复,如果重复了,就退出
*/
#include <iostream>
#include <cstdio>
#include <vector>
#include <set>
#define ll long long
using namespace std;
set<int >v;
ll change(ll x){
x++;
while(x%10==0){
x/=10;
}
return x;
}
int main(){
ll n;
cin>>n;
v.insert(n);
while(1){
n=change(n);
if(v.find(n)==v.end()){//没有重复
v.insert(n);
}else{
break;
}
}
printf("%d\n",v.size());
return 0;
}
/*
给出一个数字字符串,然后9个数字变化公式,要求你进行变化,使得最后字典序最大
contiguous subsegment注意是连续的子字符串
从第一个可以变化的下标开始,后面的可以进行变化,也可以不变化,使得其为连续的即可
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=2e5+5;
int n;
char s[N];
int a[10];
void solve(int id){
for(int i=id;i<n;i++){
if(s[i]<=a[s[i]-'0']+'0'){
s[i]=a[s[i]-'0']+'0';
}else{
return;
}
}
}
int main(){
cin>>n;
scanf("%s",s);
for(int i=1;i<=9;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++){
if(s[i]<=a[s[i]-'0']+'0'){
solve(i);
break;
}
}
printf("%s\n",s);
return 0;
}
Codeforces Round #555 (Div. 3)
标签:第一个 std 一个 cin 字符串 div 字符 size ==
原文地址:https://www.cnblogs.com/Emcikem/p/11480124.html