12372022-03-27 19:38:57k_balintKígyózó szavakcpp14Elfogadva 100/1008ms2660 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf=2e9;

int n,q;
ll dp[1003][26];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    for(int i=0;i<26;i++){
        dp[1][i]=1;
    }

    for(int i=2;i<=1000;i++){
        for(int j=0;j<26;j++){
            dp[i][j]=1;
            if(j) dp[i][j]+=dp[i-1][j-1];
            if(j<25) dp[i][j]+=dp[i-1][j+1];
            dp[i][j]=min(dp[i][j],inf);
        }
    }

    cin>>n>>q;

    while(q--){
        string ans="";

        int k; cin>>k;
        int let=0;
        while(dp[n][let]<k){
            k-=dp[n][let];
            let++;
        }

        int pos=n;
        while(1){
            ans.push_back(let+'a'); --k; 
            if(!k) break;
            if(!let){++let;--pos;continue;}
            if(let==25){--let;--pos;continue;}

            if(k<=dp[pos-1][let-1]){
                --let;
            }
            else{
                k-=dp[pos-1][let-1];
                ++let;
            }

            --pos;
        }

        cout << ans << endl;
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva0/03ms2408 KiB
2Elfogadva0/02ms2440 KiB
3Elfogadva5/52ms2340 KiB
4Elfogadva5/53ms2348 KiB
5Elfogadva5/52ms2352 KiB
6Elfogadva5/53ms2356 KiB
7Elfogadva5/52ms2360 KiB
8Elfogadva5/53ms2504 KiB
9Elfogadva5/54ms2532 KiB
10Elfogadva5/54ms2544 KiB
11Elfogadva5/54ms2564 KiB
12Elfogadva5/56ms2556 KiB
13Elfogadva5/58ms2588 KiB
14Elfogadva6/63ms2572 KiB
15Elfogadva6/68ms2600 KiB
16Elfogadva6/66ms2604 KiB
17Elfogadva6/64ms2624 KiB
18Elfogadva7/74ms2632 KiB
19Elfogadva7/78ms2660 KiB
20Elfogadva7/74ms2652 KiB