题目:
找出最小合并映射。
题解:
构造题的Note一般都是坑,跟着他想你就输了。
找规律:
a = 0
aa = 1
aaa = 3
aaaa = 10
aaaaa = 15
a的漏洞用b贴,b的漏洞用c贴,26个字母足够贴满了。
#include<iostream>
#include<string>
using namespace std;
int arr[20100];
int main(){
for(int i=2;i<500;i++){
arr[i]=arr[i-1]+i-1;
}
int cnt=0;
int x;
cin>>x;
if(x==0){
cout<<"a"<<endl;
return 0;
}
string str="";
while(x){
for(int i=499;i>=0;i--){
if(arr[i]<=x){
x-=arr[i];
for(int j=0;j<i;j++){
str+=(char)('a'+cnt);
}
cnt++;
break;
}
}
}
cout<<str<<endl;
}