L1-050 倒数第N个字符串 (15 分)


题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805080346181632

分析:我们可以通过给定的倒数第几个数来求该数是顺数第几个数(因为这样比较容易思考一点?)然后类似于求一个整数的每一位数字,这里我们所用的进制是26进制,然后再加上a,因为是求字符。(好难想,我是参考别人的hh)

题解:

#include 
#include 
using namespace std;
int main()
{
    int L, N;
    cin >> L >> N;
    char c[6];
    long long m = pow(26,L) - N;
    for(int i = L - 1; i >= 0; i--)  // 要逆序算,因为个位先算出来,但是打印的时候是最高位先打印出来 
    {
        c[i] = m %26 + 'a';
        m /= 26; 
    }
    cout << c << endl;
    return 0;
}

相关