FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
Time Limit: 1000MS Memory Limit: 257792K
【Description】 | 【题目描述】 |
I bet, except Fat Brothers, all of you don’t like strange way to show integers , he is really like this way to showing integers:
1 -> ‘A’
2 -> ‘B’
…….
26 -> ‘Z’
27 -> ‘AA’
28 -> ‘AB’
…….
Unfortunately, Fat Brother’s mathematics is poor, so he needs your help, he will give you some integers, and you must transform it with Fat Brother’s way. | 我琢磨着,除了胖哥,没人想用如此奇葩的方式表示整数,可他总喜欢这么来写整数:
1 -> ‘A’
2 -> ‘B’
…….
26 -> ‘Z’
27 -> ‘AA’
28 -> ‘AB’
……. 不幸的是,胖哥的数学并不好,因此他需要你的帮助,他会给你一些整数,你必须把他们转化成胖哥的表示方式。 |
【Input】 | 【输入】 |
Input starts with an integer T(T <= 10000), denoting the number of test case.
For each test case, an integers n(1 <= n <= 2147483647) is given. | 输入以一个整数T(T <= 10000)打头,表示测试用例的数量。
对于每个测试用例,都有一个整数n(1 <= n <= 2147483647)。 |
【Output】 | 【输出】 |
For each case, output the corresponding string with upper-case letters. | 对于每个用例,输出以大写字母组成的字符串。 |
【Sample Input - 输入样例】 | 【Sample Output - 输出样例】 |
3 17311 2068 37 | YOU CAN AK |
【题解】
大概意思就是10进制转26进制,不过需要注意输入数据并不是从0开始的。
对了,G++里没有strrev这个函数
【代码 C++】
1 #include<cstdio> 2 int main(){ 3 char opt[20]; 4 int t, a, i; 5 scanf("%d", &t); 6 while (t--){ 7 scanf("%d", &a); 8 for (i = -1; a--; a /= 26) opt[++i] = 'A' + a % 26; 9 while (~i) putchar(opt[i--]); 10 puts(""); 11 } 12 return 0; 13 }