1309:【例1.6】回文數(noip1999)
時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 7074 通過數: 2624
【題目描述】
若乙個數(首位不為零)從左向右讀與從右向左讀都是一樣,我們就將其稱之為回文數。例如:給定乙個 10進製數 56,將 56加 65(即把56從右向左讀),得到 121是乙個回文數。又如,對於10進製數87,
step1: 87+78= 165 step2: 165+561= 726
step3: 726+627=1353 step4:1353+3531=4884
在這裡的一步是指進行了一次n進製的加法,上例最少用了4步得到回文數4884。
寫乙個程式,給定乙個n(2<n<=10或n=16)進製數 m.求最少經過幾步可以得到回文數。如果在30步以內(包含30步)不可能得到回文數,則輸出「impossible」 。
【輸入】
給定乙個n(2<n<=10或n=16)進製數m。
【輸出】
最少幾步。如果在30步以內(包含30步)不可能得到回文數,則輸出「impossible」。
【輸入樣例】
9 87
【輸出樣例】
6思路:n進製運算:
1.當前位由10%改為n%
2.進製處理由/10改為/n
3.其他運算規則不變
4.回文數判斷 需要熟悉
#include
#include
#include
using
namespace std;
int a[
100]
,b[100
],n,count;
//初始化陣列a--使用陣列進行判斷
void
init
(int a)
else}}
//判斷乙個數是否是回文數
intpalindrom
(int a)
}return1;
}//將非回文數進行加法運算
void
addition
(int a)
for(i =
1; i <=a[0]
; i++)if
(a[a[0]
+1]>
0) a[0]
++;//修正新的a位數
}int
main()
//判斷m是否是n進製的回文數字--使用陣列的方式
count=0;
while
(count<=30)
} cout<<
"impossible"
;return0;
}
1309 例1 6 回文數 Noip1999
題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都是一樣,我們就將其稱之為回文數。例如 給定乙個 10進製數 56,將 56加 65 即把56從右向左讀 得到 121是乙個回文數。又如,對於10進製數87,step1 87 78 165 step2 165 561 726 step3 726 ...
52 回文平方數
52 回文平方數 問題描述 回文數是指從左向右念和從右向左唸都一樣的數。如12321就是乙個典型的回文數。給定乙個進製b 2 輸入說明 共一行,乙個單獨的整數b b用十進位制表示,比如18 輸出說明 每行兩個數字,第二個數是第乙個數的平方,且第二個數是回文數。注意 輸出時,這兩個數都應該以b進製表示...
1282 回文數猜想
problem description 乙個正整數,如果從左向右讀 稱之為正序數 和從右向左讀 稱之為倒序數 是一樣的,這樣的數就叫回文數。任取乙個正整數,如果不是回文數,將該數與他的倒序數相加,若其和不是回文數,則重複上述步驟,一直到獲得回文數為止。例如 68變成154 68 86 再變成605 ...