網(wǎng)站建設(shè)kaituozu中國建設(shè)網(wǎng)官方網(wǎng)站
[藍(lán)橋杯 2022 國 B] 最大數(shù)字
題目描述
給定一個正整數(shù) NNN。你可以對 NNN 的任意一位數(shù)字執(zhí)行任意次以下 2 種操作:
-
將該位數(shù)字加 111。如果該位數(shù)字已經(jīng)是 999,加 111 之后變成 000。
-
將該位數(shù)字減 111。如果該位數(shù)字已經(jīng)是 000,減 111 之后變成 999。
你現(xiàn)在總共可以執(zhí)行 111 號操作不超過 AAA 次,222 號操作不超過 BBB 次。
請問你最大可以將 NNN 變成多少?
輸入格式
第一行包含 3 個整數(shù):NNN,AAA,BBB 。
輸出格式
一個整數(shù)代表答案。
樣例 #1
樣例輸入 #1
123 1 2
樣例輸出 #1
933
提示
【樣例說明】
對百位數(shù)字執(zhí)行 222 次 222 號操作,對十位數(shù)字執(zhí)行 111 次 111 號操作。
【評測用例規(guī)模與約定】
對于 30%30 \%30% 的數(shù)據(jù),1≤N≤100;0≤A,B≤101 \leq N \leq 100 ; 0 \leq A, B \leq 101≤N≤100;0≤A,B≤10
對于 100%100 \%100% 的數(shù)據(jù), 1≤N≤1017;0≤A,B≤1001 \leq N \leq 10^{17} ; 0 \leq A, B \leq 1001≤N≤1017;0≤A,B≤100
藍(lán)橋杯 2022 國賽 B 組 D 題。
#include <iostream>
#include <cmath>
using namespace std;
string n;
long long ans;
int a,b;
void dfs(int x,long long an){ //a代表每次遍歷的數(shù) int t=n[x]-'0'; //位數(shù)轉(zhuǎn)為intif(n[x]){ //防止為空 int c=min(a,9-t);a-=c;dfs(x+1,an*10+t+c);a+=c;if(b>t){b=b-t-1;dfs(x+1,an*10+9);b=b+t+1;}}else{ans=max(ans,an);}
}
int main(){cin>>n>>a>>b;dfs(0,0); //0號字符 cout<<ans;return 0;
}