第三题 #include<bits/stdc++.h> using namespace std; long long const INF=1e10; long long const maxn=105; long long dp[maxn][maxn]; void init() {     dp[0][0]=1;     for(long long i=0;i<=100;i++) dp[i][0]=dp[0][i]=1;     for(long long i=1;i<=100;i++)     for(long long j=1;j<=100;j++) {         dp[i][j]=min(INF,dp[i-1][j]+dp[i][j-1]);     } } long long n,m,k; void dfs(string & ans) {    if(n==0) {ans.append(m,'z');return;}    if(m==0) {ans.append(n,'a');return;}    if(k<=dp[n-1][m]) {       n--;ans+='a';dfs(ans);    }    else {      k-=dp[n-1][m--];ans+='z';dfs(ans);    } } int main() {    init();    scanf("%lld%lld%lld",&n,&m,&k);    if(k>dp[n][m]) {     cout<<-1<<endl;     return 0;    }    string ans;    dfs(ans);    cout<<ans<<endl; }
点赞 1

相关推荐

牛客网
牛客企业服务