藍橋杯 ALGO 14 演算法訓練 回文數

2021-09-01 09:20:11 字數 1144 閱讀 3042

問題描述

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

例如:給定乙個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

分析:正常模擬加法即可,注意因為涉及進製超過10,過程不用string而用vector模擬~

#include #include #include int k, cnt = 0;

using namespace std;

vectorf(vectorv)

if (carry > 0) ans.insert(ans.begin(), carry);

return ans;

}bool is(vectorv)

int main()

while (!is(v))

}printf("step=%d\n",cnt);

return 0;

}

演算法訓練 ALGO14 回文數

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

藍橋 ALGO 14 回文數

acm模版 模擬題,直接模擬這個過程不斷判定即可。需要注意的是最後位數可能比較大,因為每一次相加都可以粗略看做 2 而最多三十步,最後資料的大小可能超乎你的想象。一開始我陣列只開了幾十,wa 了一組資料,然後開到了 100 ac 了 include include using namespace s...

藍橋杯 演算法訓練 ALGO12

問題描述 如果乙個序列滿足下面的性質,我們就將它稱為擺動序列 1.序列中的所有數都是不大於k的正整數 2.序列中至少有兩個數。3.序列中的數兩兩不相等 4.如果第i 1個數比第i 2個數大,則第i個數比第i 2個數小 如果第i 1個數比第i 2個數小,則第i個數比第i 2個數大。比如,當k 3時,有...