PAT-進制轉換-A1019 General Palindromic Number (20分)

題目描述:html

  給出兩個整數n、b,問十進制整數n在b進制下是不是迴文數,如果,則輸出Yes;不然,輸出No。在此以後輸出n在b進制下的表示。ios

  單詞:Palindromic Number--迴文數;decimal--十進制的。 算法

輸入格式:數組

  輸入用空格分隔的兩個數,第一個數是十進制數n(0<N109),第二個數是十進制數b( 2b109)。ide

輸出格式:spa

  第一行輸出Yes或No,第二行輸出十進制數n在b進制下的表示,用空格把每一個數隔開,末尾不能有多餘空格。code

樣例:htm

  樣例一:blog

    輸入:27 2ci

    輸出:第一行:Yes     第二行:1 1 0 1 1

  樣例二:

    輸入:121 5

    輸出:第一行:No      第二行:4 4 1

思路:

  1. 先將十進制數n轉換爲b進制數
  2. 對數進行判斷,由數組,比較位置i和num-i-1的數,只要有一個數不一樣,就不是迴文數。

注意點:

  注意特殊數據,0的輸出。

代碼:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //存儲轉換後的數的每一位數
 5 int datas[48] = { 0 };
 6 
 7 int main()
 8 {
 9     int n, b, num = 0;
10     bool flag = true;
11 
12     scanf("%d %d", &n, &b);
13 
14     //進行進制轉換
15     do
16     {
17         datas[num++] = n % b;
18         n /= b;
19     } while (n != 0);
20 
21     //對轉換後的數進行判斷
22     for (int i = 0;i < num/ 2;i++)
23     {
24         if (datas[i] != datas[num - i - 1])
25         {
26             flag = false;
27             break;
28         }
29     }
30 
31     //輸出判斷結果
32     if (flag)printf("Yes\n");
33     else printf("No\n");
34 
35     //輸出轉換結果
36     for (int i = num - 1;i >= 0;i--)
37     {
38         printf("%d", datas[i]);
39         if (i != 0)printf(" ");
40     }
41 
42     return 0;
43 }
View Code

 

 

參考書籍-《算法筆記》-胡凡

相關文章
相關標籤/搜索