PAT甲级1019水题飘过
题目分析:
将n转成对应大小的b进制数之后判断是否为回文串,是则Yes,否则No
1 #include<iostream> 2 using namespace std; 3 4 int k[40]; //存放从0开始b进制的每一位数 5 6 void run(int n, int b){ 7 int cnt = 0; 8 while(n > 0){ 9 k[cnt] = n % b; 10 n /= b; 11 cnt++; 12 } 13 int flag = 0; 14 for(int i = 0; i < cnt / 2; i++){ 15 if(k[i] != k[cnt-i-1]){ 16 flag = 1; 17 break; 18 } 19 } 20 if(flag == 0) printf("Yes\n"); 21 else printf("No\n"); 22 for(int i = cnt-1; i >= 0; i--){ 23 if(i !=cnt-1) printf(" "); 24 printf("%d", k[i]); 25 } 26 printf("\n"); 27 } 28 29 int main(){ 30 int n, b; 31 while(scanf("%d%d", &n, &b) != EOF){ 32 run(n, b); 33 } 34 return 0; 35 }
如果有任何意见请在评论区积极留言