題目: 思路: 進位轉換,26個字母的全排列相當於是26進位。既然題目要求倒數序列,那麼乾脆直接從zzz往前排好了,z對應十進位的0,y對應十進位的1,依次類推,a對應25。可以拿十進位的一個數做個例子對應26進位來看,該如何取模求餘。不然像我這樣的糊塗容易搞錯。。。 然後定義一個6位數組(因為L最 ...
題目:
思路:
進位轉換,26個字母的全排列相當於是26進位。既然題目要求倒數序列,那麼乾脆直接從zzz往前排好了,z對應十進位的0,y對應十進位的1,依次類推,a對應25。可以拿十進位的一個數做個例子對應26進位來看,該如何取模求餘。不然像我這樣的糊塗容易搞錯。。。 然後定義一個6位數組(因為L最大為6嘛),可以直接把這個數組初始化全為‘z',這樣當沒有高位的時候也能輸出z。 我自己寫的代碼還是有小問題不能全部AC,還是把大佬的代碼放上來吧,其實思路差不多。傳送門:https://blog.csdn.net/liuchuo/article/details/81811700
#include <iostream> #include <cmath> #include <vector> using namespace std; int main() { int l, n, num; cin >> l >> n; vector<int> v; num = pow(26,l) - n ; while(num) { v.push_back(num % 26); num /= 26; } for(int i = 0; i < l - v.size(); i++) cout << 'a'; for(int i = v.size() - 1; i >= 0; i--) cout << (char)('a' + v[i]); return 0; }