若乙個數(首位不為零)從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。
例如:給定乙個十進位制數56,將56加65(即把5656從右向左讀),得到121是乙個回文數。
又如:對於十進位制數8787:
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)進製數mm(100位之內),求最少經過幾步可以得到回文數。如果在3030步以內(包含30步)不可能得到回文數,則輸出impossible!
輸入格式:
兩行,分別是n,m。
step=ans輸入樣例#1:
10輸出樣例#1:87
step=4題解:回文串判斷,肯定要用到字串,這裡用字串輸入,倒敘轉化為整型陣列,判斷是否為回文串,如果不是,就讓倆個相反的字串相加,k++
**如下:
#include
#define maxn 100000
#define ifn 0x3f3f3f3f
using namespace std;
typedef
long
long ll;
int n,a[maxn+5]
,b[maxn+5]
;int k;
bool jude()
//判斷是否為回文串
return true;
}void
jiaf()
//字串加法
for(
int i=
1;i<=a[0]
;i++)}
if(a[a[0]
+1])a[0]
++;}int
main()
while(!
jude()
&&k<=30)
if(k<=30)
else
printf
("impossible!\n");
return0;
}
洛谷 P1015 回文數
題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數5656,將5656加6565 即把5656從右向左讀 得到121121是乙個回文數。又如 對於十進位制數8787 step1 8787 7878 165165 step2 165165 5...
洛谷P1015(回文數
若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數 56,將 56 加 65 即把 5656 從右向左讀 得到 121 是乙個回文數。又如 對於十進位制數 87 step1 87 78 165 step2 165 561 726 step3 726 ...
洛谷 P1015 回文數
題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數56,將56加65 即把56從右向左讀 得到121是乙個回文數。又如 對於十進位制數87 step1 87 78 165 step2 165 561 726 step3 726 627 13...