n对 xa取模,就是xa-1 位上的数字,因为模出来的数不足xa
举例来说就是5&21=1,这个1就是20位上的1
当前位取完后,n/=xa,表示n将对x(a+1)进行取模(进入下一位)
重复此操作直至n=0。
为啥是从低位开始取模呢?
直观解释:对于取模后留在第a位的n,你连第a位的xa-1都凑不齐,还想凑齐第a+1位的xa,进到第a+1位去吗?
//把n转换为x进制下的数
int turn(int n, int x) {
//a1代表当前是对对应x进制的第几位进行操作
int ans = 0, a1 = 1;
while(n) {
ans += (n % x) * a1;
n /= x;
//要进位咯
a1 *= 10;
}
return ans;
}