題目描述:html
給出兩個整數n、b,問十進制整數n在b進制下是不是迴文數,如果,則輸出Yes;不然,輸出No。在此以後輸出n在b進制下的表示。ios
單詞:Palindromic Number--迴文數;decimal--十進制的。 算法
輸入格式:數組
輸入用空格分隔的兩個數,第一個數是十進制數n(0<N≤109),第二個數是十進制數b( 2≤b≤109)。ide
輸出格式:spa
第一行輸出Yes或No,第二行輸出十進制數n在b進制下的表示,用空格把每一個數隔開,末尾不能有多餘空格。code
樣例:htm
樣例一:blog
輸入:27 2ci
輸出:第一行:Yes 第二行:1 1 0 1 1
樣例二:
輸入:121 5
輸出:第一行:No 第二行:4 4 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 }
參考書籍-《算法筆記》-胡凡