#include<iostream> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<algorithm> #include<map> #include<vector> #include<queue> using namespace std; bool Judge(int z[],int num){ //判断数组z所存数是否为回文数,num为位数 for(int i=0;i<=num/2;i++){ if(z[i]!=z[num-1-i]){ //如果位置i与对称位置num-1-i不相同 return false; } } return true; //所有位置都对称 } int main(){ int n,b,z[40] ,num=0; //数组存放转换结果,num为其位数 scanf("%d%d",&n,&b); do{ //将n转换为b进制,结果存在数组z中 z[num++]=n%b; //除基取余 n/=b; }while(n!=0);//当n变为0时退出循环 bool flag=Judge(z,num); //判断数组z保存的数是否回文 if(flag==true) printf("Yes\n"); else printf("No\n"); for(int i=num-1;i>=0;i--){ //注意输出数组是从后往前的!!! printf("%d",z[i]); if(i!=0) printf(" "); } system("pause"); return 0; }