RQNOJ PID4 數列

題目描述

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

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

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

3^0+3^1+3^2,…)spa

請你求出這個序列的第N項的值(用10進制數表示)。3d

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

輸入格式

輸入只有1行,爲2個正整數,用一個空格隔開:blog

k Nci

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

輸出格式

輸出爲計算結果,是一個正整數(在全部的測試數據中,結果均不超過2.1*10^9)。(整數前不要有空格和其餘符號)。io

樣例輸入

3 100

樣例輸出

981

解題思路

  這道題的解題挺巧妙的;

1        3^0                      1

2        3^1                      10

3        3^1+3^0              11

4        3^2                      100

5        3^2+3^0              101

6         3^2+3^1             110

7        3^2+3^1+3^0      111

  解釋:先將序號轉換成二進制,接着對每一位進行計算(二進制數中有1的位置進行計算,0則忽略);

代碼以下

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int k, n, ans = 0, temp = 1;
 5     cin >> k >> n;
 6     while(n){
 7         if(n & 1)        ans += temp;
 8         temp *= k;
 9         n >>= 1;
10     }
11     cout << ans << endl;
12     return 0;
13 }
數列
相關文章
相關標籤/搜索