PAT天梯赛 L1-050 倒数第N个字符串
生活随笔
收集整理的這篇文章主要介紹了
PAT天梯赛 L1-050 倒数第N个字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:點擊打開鏈接
AC代碼://把倒著數轉化為正著數//也就是進制問題 #include<iostream> using namespace std;char a[10];int f(int x) {//進制int sum = 1;for(int i = 0; i < x; i ++) {sum *= 26;}return sum; } int main() {int l, n;cin >> l >> n;int l1 = f(l);int x = l1 - n;//得到正數第幾個int j = 0;for(int i = l -1; i >= 0; i--) {a[j] = x/f(i) + 'a';//依次得到所有的 除數 + ‘a’x = x % f(i); //余數為新值j++;}for(int i = 0; i < l; i++) {cout << a[i];}return 0; }
給定一個完全由小寫英文字母組成的字符串等差遞增序列,該序列中的每個字符串的長度固定為 L,從 L 個 a 開始,以 1 為步長遞增。例如當 L 為 3 時,序列為 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。這個序列的倒數第27個字符串就是 zyz。對于任意給定的 L,本題要求你給出對應序列倒數第 N 個字符串。
輸入格式:
輸入在一行中給出兩個正整數 L(2 <= L <= 6)和 N(<= 105)。
輸出格式:
在一行中輸出對應序列倒數第 N 個字符串。題目保證這個字符串是存在的。
輸入樣例:3 7417 輸出樣例:pat 思路:一直沒有思路。最后10分鐘用n對26取余的思路,得了9分。附上9分代碼:#include<iostream> #include<algorithm> using namespace std;int main() {int l, num;int r;string temp;cin >> l >> num;while(num > 0) {r = num % 26;char c = 'z' - r;temp += c;num /= 26;}temp[0] = temp[0] + 1;reverse(temp.begin(), temp.end());cout << temp; }后來看了網上的題解,其中一個比較好理解。AC代碼://把倒著數轉化為正著數//也就是進制問題 #include<iostream> using namespace std;char a[10];int f(int x) {//進制int sum = 1;for(int i = 0; i < x; i ++) {sum *= 26;}return sum; } int main() {int l, n;cin >> l >> n;int l1 = f(l);int x = l1 - n;//得到正數第幾個int j = 0;for(int i = l -1; i >= 0; i--) {a[j] = x/f(i) + 'a';//依次得到所有的 除數 + ‘a’x = x % f(i); //余數為新值j++;}for(int i = 0; i < l; i++) {cout << a[i];}return 0; }
轉載于:https://www.cnblogs.com/ACMerszl/p/9573008.html
總結
以上是生活随笔為你收集整理的PAT天梯赛 L1-050 倒数第N个字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用dynamic简化数据库的访问
- 下一篇: Corejava -异常