C P1015 回文數題解

2021-08-17 06:51:42 字數 1150 閱讀 7204

讓我們回憶一下題目:

題目描述

若乙個數(首位不為零)從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。

例如:給定乙個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(100位之內),求最少經過幾步可以得到回文數。如果在30步以內(包含30步)不可能得到回文數,則輸出「impossible!」

輸入格式:

兩行,分別是n,m。

輸出格式:

step=ans

輸入樣例#1:

10

87

輸出樣例#1:

step=4

題解

乙個小技巧:將n進製數反轉,再十進位制下即可翻轉,無需轉成字元陣列。隨後判斷反轉後的數(10進製)與原來的數(先把它轉成十進位制)是否相同即可,若不相同,兩數相加。

關鍵字:x*k+q(k進製)

上**

#include #include #include using namespace std;

unsigned long long n=0,k,len,nex;

string nn;

bool wow(unsigned long long a)

unsigned long long ch(char a)

int main()

{ cin>>k>>nn;len=nn.size();

for (int i=0;i我的部落格,

資源位址

P1015 回文數(模擬)

洛谷1015 題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數 5656,將 5656 加 6565 即把 5656 從右向左讀 得到 121121 是乙個回文數。又如 對於十進位制數 8787 step1 87 78 16587 78 ...

洛谷P1015回文數

若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數56,將56加65 即把5656從右向左讀 得到121是乙個回文數。又如 對於十進位制數8787 step1 87 78 165 step2 165 561 726 step3 726 627 135...

洛谷 P1015 回文數

題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數5656,將5656加6565 即把5656從右向左讀 得到121121是乙個回文數。又如 對於十進位制數8787 step1 8787 7878 165165 step2 165165 5...