进制转换
以十进制和二十六进制为例:二十六进制即计数每过26进1位。
在编写代码的时候,我们取余部分往往是写成 “%x(x进制)”。
误区注意:我们经常会认为x进制中是1~x,这个思维是错误的,在任何进制中,一个数位的取值范围是0~x-1。例如十进制是0~9而不是1~10,二十六进制是0~25而不是1~26,10和26其实是第二位数字的”0”。(PS:当然如果是计数的话,一般都是从1开始计数,所以在这种情况下是1~26和1~10)
有点像我们经常写for循环其中的条件一样,如果想循环10次,大家经常会写成下面这种形式
//C++
for(int i=0;i<=9;i++)//举的例子
for(int i=0;i<10;i++)//当然,平时我写这种比较多
PAT L1-050
https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805080346181632?type=7&page=0
//C++
char arr[7];//根据题意序列最长为6位,固开6+1位数组以防不够用.
int main(){
int L,N;
int t;//临时变量
cin>>L>>N;
N-=1;//根据进制的计数和表示两种不同理解,倒数第N个其实就是表示中数值的“N-1”
//例如正数第1个数字,其实就是值“0”;
//同理倒数第1个序列,其实就相当于值中的 “zzz...”这样
for(int i=0;i<L;i++){
t=N%26;//临时变量存
arr[i]='z'-t;//每一位的值
N/=26;//循环一次后将N值除26以便计算下一位的值
}
for(int i=L-1;i>=0;i--){//将数组反向输出,因为前面存的时候是倒着存的
cout<<arr[i];
}
return 0;
}