题目描述
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:
(该序列实际上就是:)
请你求出这个序列的第N项的值(用10进制数表示)。
例如,对于k=3,N=100,正确答案应该是981。
输入格式
2个正整数,用一个空格隔开:
输出格式
1个正整数。(整数前不要有空格和其他符号)。
输入输出样例
输入 #1
3 100
输出 #1
981
说明/提示
NOIP 2006 普及组 第四题
思路
请你求出这个序列的第N项的值(用10进制数表示)
这句话已经提示的很明显了,此题与进制转化有关,i的二进制当作k进制来转化为10进制的话就是第i个数,举例如下:
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
三进制 | 1 | 10 | 11 | 100 | 101 | 110 | 111 |
十进制 | 1 | 3 | 4 | 9 | 10 | 12 | 13 |
源码
#include<bits/stdc++.h>
using namespace std;
long long n, k, ans = 0, base = 1;
int main()
{
cin >> k >> n;
while(n > 0)
{
if (n & 1)
ans += base;
base *= k;
n >>= 1;
}
cout << ans;
return 0;
}