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 } 

 

posted on 2019-10-22 18:41  白泽talk  阅读(94)  评论(0编辑  收藏  举报