ABCDEFG - NYOJ
/*做题时为数组开多大而犹豫了,10进制下数据最多才10位,
更别说26进制(写了个位数计算小程序,得位数为7
int N = 2147483647 ,cnt;
while(N){
N /= 26;
cnt++;
}
cout << cnt;
*/
/*还有就是 /26 还是/27的问题,10进制1位里0-9十个数,那26进制一位里也是26个数
写题时想着十进制个位最大为9,操作时是/10,
那26进制个位最大是26,操作时是不是要/27,
现在想起来真是觉得挺离谱的,模拟题没思路时每一个不确定的小细节都值得推敲,
进制转换方面的知识要好好的复习一下
*********************
注意点::
与常规进制转换不同的是,这道题进位后,原数还是进位前的状态没有改变
举例子
普通进制 9 + 1 = 10
该题进制 9 + 1 = 19
因此需要做一个进位判断
*/
完整ac代码
#include <iostream> using namespace std; int main(){ int t ; cin >> t; while(t--){ int cnt = 0,n,num[10]; cin >> n; while(n){ num[++cnt] = n % 26; n /= 26; if(!num[cnt]){ num[cnt] = 26; n--; } } for(int i = cnt;i > 0;i --){ cout << char(num[i] + 'A' -1); } cout << endl; } return 0; }