题目描述
程小盟有一个很大的数字, 她想让这个数字变得更大。
有两种操作:
1. 将数字的每一位都增加 1,如果某一位是 9,则会增加到 0。这种操作可以使用无限次。
2. 将数字的某一位增加 1,如果某一位是 9,则会增加到 0。这种操作至多只能使用一次。
请问程小盟最多能将这个数字变成多少。
输入格式
输入一个正整数n
输出格式
输出一个正整数表示答案。
样例输入content_copy
320
样例输出content_copy
996
提示/说明
【说明】
先进行 6 次操作 1,变成 986,然后对第二位进行一次操作 2,变成 996。
【样例 2 输入】
290
【样例 2 输出】
977
【样例 3 输入】
9
【样例 3 输出】
9
【说明】
不用进行任何操作就已经最大了。
【备注】
对于 10% 的测试点,n < 10
对于 20% 的测试点,n < 100
对于 40% 的测试点,有 n < 109 对于 60% 的测试点,有 n < 1018
对于 100% 的测试点,有 n < 10100000
#include<bits/stdc++.h>
using namespace std;
char zz(char c){
if(c=='0'){
return '1';
}else if(c=='1'){
return '2';
}else if(c=='2'){
return '3';
}else if(c=='3'){
return '4';
}else if(c=='4'){
return '5';
}else if(c=='5'){
return '6';
}else if(c=='6'){
return '7';
}else if(c=='7'){
return '8';
}else if(c=='8'){
return '9';
}else if(c=='9'){
return '0';
}
}
int main(){
string s;
cin>>s;
for(;;){
if(s[0]=='9'){
break;
}else{
for(int i=0;i<s.size();i++){
s[i]=zz(s[i]);
}
}
}
for(int i=0;i<s.size();i++){
if(s[i]=='9')continue;
else{
s[i]=zz(s[i]);
break;
}
}
cout<<s;
return 0;
}