演算法訓練 數列

2021-09-11 19:48:15 字數 1202 閱讀 7849

題目鏈結

錦囊1

進製處理。

錦囊2先把原數按二進位制的方法轉成二進位制,然後再把轉換後的數看成k進製,再轉換回來。

問題描述

給定乙個正整數k(3≤k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k=3時,這個序列是:

1,3,4,9,10,12,13,…

該序列實際上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…)

請你求出這個序列的第n項的值(用10進製數表示)。

例如,對於k=3,n=100,正確答案應該是981。

方法一:分析: 通過觀察,能夠發現序列上的第i位實際上是將i變成

1,3,4,9,10,12,13,…

該序列實際上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2

設a[i]= 1, 2, 3, 4, 5, 6, 7, ........

則i :1 = 2^0,  2 = 2^1,  3 = 2^0+2^1,4 = 2^2,5 = 2^0+2^2, 6 = 2^1+2^2,7 = 2^0+2^1+2^2...........

則本題實際上就是將乙個二進位制的數轉化為其他進製的數

#include using namespace std;

int main(int argc, char *ar**)

int ans = 0;

for(int i = binary.length()-1; i >= 0; i--)

ans = ans*k + binary[i]-'0';

cout<< ans << "\n";

return 0;

}

輸入格式

只有1行,為2個正整數,用乙個空格隔開:

k n(k、n的含義與上述的問題描述一致,且3≤k≤15,10≤n≤1000)。

輸出格式

計算結果,是乙個正整數(在所有的測試資料中,結果均不超過2.1*109)。(整數前不要有空格和其他符號)。

樣例輸入

3 100

樣例輸出

藍橋杯 演算法訓練 數列

題目 演算法訓練 數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,31,3 0 31,3 2,...

演算法訓練 調和數列問題

問題描述 輸入乙個實數x,求最小的n使得,1 2 1 3 1 4 1 n 1 x。輸入的實數x保證大於等於0.01,小於等於5.20,並且恰好有兩位小數。你的程式要能夠處理多組資料,即不停地讀入x,如果x不等於0.00,則計算答案,否則退出程式。輸出格式為對於乙個x,輸出一行n card s 其中n...

演算法訓練 調和數列問題

輸入乙個實數x,求最小的n使得,1 2 1 3 1 4 1 n 1 x。輸入的實數x保證大於等於0.01,小於等於5.20,並且恰好有兩位小數。你的程式要能夠處理多組資料,即不停地讀入x,如果x不等於0.00,則計算答案,否則退出程式。輸出格式為對於乙個x,輸出一行n card s 其中n表示要計算...