コードは短め。
https://yukicoder.me/problems/no/2198
問題
非負整数Mが与えられる。
c,o,nで構成される60000文字以下の文字列Sで、連続でなくてもよい部分文字列として"con"をちょうどM通り持つものを構成せよ。
解法
Mを4桁ずつ区切ったとき、上からa,b,cとする。
(a個の'c')+(10000個のo)+(9998個のn)+(b個のc)+(9999個の'o')+(c個の'c')+"on"
とすると、a*10^8+b*10^4+c個のconが取れる。
ll M; void solve() { int i,j,k,l,r,x,y; string s; cin>>M; ll a=M/100000000; ll b=M/10000%10000; ll c=M%10000; string S=string(a,'c')+string(10000,'o')+string(9998,'n')+string(b,'c')+string(9999,'o')+string(c,'c')+"on"; cout<<S<<endl; }
まとめ
色々な解法がありそう。