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 -异常