签到题,进制转换。10进制转P进制。
附代码:
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n, b, num = 0;
scanf("%d %d", &n, &b);
int z[40];
do{
z[num ++] = n%b;
n = n/b;
}while(n != 0);
int flag = 1;
for(int i = 0; i < num/2; i ++){
if(z[i] != z[num-i-1]){
flag = 0;
break;
}
}
if(flag) printf("Yes\n");
else printf("No\n");
printf("%d", z[num-1]);
for(int i = num-2; i >= 0; i --){
printf(" %d", z[i]);
}
}
这里推荐进制转换的时候用算法笔记给出的代码:
int x, Q;
int z[40], num = 0; //将10进制的x转化为Q进制的z
do{
z[num++] = x%Q;
x = x/Q;
}while(x != 0);
利用do…while而不是while,这样的话就不用特判x0时num0而进不去循环的情况,更方便一些~