90分求助
查看原帖
90分求助
378996
UncleSam_Died楼主2023/6/24 11:49

我讨论过的,不会出现贪心影响后面的情况

#include<bits/stdc++.h>
using namespace std;
long long N;
int A,B,len;
int a[25];
int main(){
	cin>>N>>A>>B;
	while(N){
		a[++len]=N%10;
		N/=10;
	}
	for(int i=len;i>=1;i--){
		if(a[i]<4){
			if(B>=a[i]+1){
				B-=a[i]+1;
				a[i]=9;
			}else{
				if(A>=9-a[i]){
					A-=9-a[i];
					a[i]=9;
				}else{
					a[i]+=A;
					A=0;
				}
			}
		}
//		else if(a[i]==4){
//			if(B>=a[i]+1){
//				B-=a[i]+1;
//				a[i]=9;
//			}else{
//				if(A>=9-a[i]){
//					A-=9-a[i];
//					a[i]=9;
//				}else{
//					a[i]+=A;
//					A=0;
//				}
//			}
//		}
		else{
			if(A>=9-a[i]){
				A-=9-a[i];
				a[i]=9;
			}else{
				if(B>=a[i]+1){
					B-=a[i]+1;
					a[i]=9;
				}else{
					a[i]+=A;
					A=0;
				}
			}
		}
	}
	for(int i=len;i;i--) cout<<a[i];
	return 0;
}

2023/6/24 11:49
加载中...