4547: T2、大大大大大

题目描述

程小盟有一个很大的数字,  她想让这个数字变得更大。

 

有两种操作:

 

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值