AISing Programming Contest 2021(AtCoder Beginner Contest 202)

省四弱鸡發表於2024-04-06

D - aab aba baa
根據題意
從左往右進行分析
如果當前該字母為a
那麼存在兩種情況
一種為b的數量為0
一種為剩餘的k的數量小於右邊所有情況的總和
其總和對應為C(剩餘的長度,b的個數)
反之則為b

點選檢視程式碼

int get(int x,int y){
int ans=1;
for(int i=1;i<=y;i++){
ans=(x-i+1)*ans/i;
}
return ans;
}
void solve(){
int a,b,k;cin>>a>>b>>k;
int n=a+b;
for(int i=1;i<=n;i++){
if(a0){
cout<<"b";
}
else if(b
0){
cout<<"a";
}
else if(k>get(a+b-1,a-1)){
k-=get(a+b-1,a-1);
cout<<"b";b--;
}
else {
cout<<"a";a--;
}
}
}

E

相關文章