演算法訓練 回文數
時間限制:1.0s 記憶體限制:256.0mb
問題描述
若乙個數(首位不為零)從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。
例如:給定乙個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(其中16進製制數字為0-9與a-f),求最少經過幾步可以得到回文數。
如果在30步以內(包含30步)不可能得到回文數,則輸出「impossible!」
輸入格式
兩行,n與m
輸出格式
如果能在30步以內得到回文數,輸出「step=xx」(不含引號),其中xx是步數;否則輸出一行」impossible!」(不含引號)
樣例輸入 9
87樣例輸出
step=6
tips;大數模擬題,注意細節
#include#include#include#include#includeusing namespace std;
int n,step;
string m;
int judge(string s)//判斷回文數
else
} return sum;
}string inttostring(long long sum)//整形轉字串
else s.push_back('0'+tmp);
sum/=n;
} if(sum>=10)
else if(sum) s.push_back('0'+sum);
reverse(s.begin(),s.end());
return s;
}int main()
{ cin>>n>>m;
while(1)
{ if(judge(m)){
cout<<"step="<=30){
cout<<"impossible!"<
回文數(藍橋杯)
若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個10進製數56,將56加65 即把56從右向左讀 得到121是乙個回文數。又如 對於10進製數87 step1 87 78 165 step2 165 561 726 step3 726 627 1353 st...
藍橋杯 回文數
問題描述 1221是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的,程式設計求所有這樣的四位十進位制數。輸出格式 按從小到大的順序輸出滿足條件的四位十進位制數。回文數判定模板 bool ishws int num return ans num include include include incl...
藍橋杯特殊回文數
基礎練習 特殊回文數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。輸入乙個正整數n,程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 輸入格式 輸入一行,包含乙個正整數n。輸出格式 按從小到大的順序輸出滿足條...