题目说明:给出一个十进制数N,基数b,判断N在b进制下是否是对称数。
代码:
#include<iostream>
#include<fstream>
#define MAX 100
using namespace std;
long N,b;
long digit[MAX];
int len=0;//digit长度
//得到的数组是反向的
void changeradix(long dec,long r){
for(int i=0;dec>0;i++){
digit[i]=dec%r;
dec=dec/r;
len++;
}
}
bool isPalin(){
int k=len-1;
for(int i=0;i<k+1;i++){
if(digit[i]!=digit[k-i]){
return false;
}
}
return true;
}
void printdigit(){
for(int i=len-1;i>0;i--){
printf("%d ",digit[i]);
}
printf("%d",digit[0]);
}
int main(){
cin>>N>>b;
changeradix(N,b);
if(isPalin())
printf("Yes\n");
else
printf("No\n");
printdigit();
return 0;
}
digit数组用整型,之前使用char型有几个点过不去,char的范围较小,基数大的时候不能表示