RQNOJ PID4 数列
题目描述
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:
1,3,4,9,10,12,13,…
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。(该序列实际上就是: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。
输入格式
输入只有1行,为2个正整数,用一个空格隔开:
k N
(k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。
输出格式
输出为计算结果,是一个正整数(在所有的测试数据中,结果均不超过2.1*10^9)。(整数前不要有空格和其他符号)。
样例输入
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 }数列
更多精彩