4C 2018 倒数的字符序列

输入L,N 将长度为L的小写字符串序列,比如L=3,序列为aaa,aab,aac,...aba,...zzz,求倒数第N个字符串序列是什么.输入3 7421 得到pat

第一感觉是A,B,C...,Z,AA,AB,AC,...ZZ,AAA,AAB......可以转换成“进制数”表示形式,由于一共26个英文字母,可以转换成26进制表示形式。转换成26进制形式后26进制数1对应A、2对应B....25对应Y,这样Z只能对应26进制数10。而十进制数27转换成26进制数为11即可对应成AA,十进制数52转换成26进制数为20对应为AZ。所有我们需要对能被26整除的正整数进行特殊处理。

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    //zzz zzy zzx ... zza ...zyz
    int L,n;
    int ans[11];
    cin>>L>>n;
     
    //3 7421(10进制下的)
    int i=L;
    n-=1;
    while(n)
    {
        ans[i--]=n%26;
        n/=26;
    }
    for(int i=1; i<=L; i++)
    {
        printf("%d ",ans[i]);
    }
    for(int i=1;i<=L;i++)
    {
        printf("%c",'z'-ans[i]);
    }
    printf("\n");
 
    return 0;
}
View Code

 

posted @ 2018-03-31 22:01  Roni_i  阅读(209)  评论(0编辑  收藏  举报