【题目链接】
ybt 1937:【06NOIP普及组】数列
洛谷 P1062 [NOIP 普及组] 数列
【题目考点】
1. 数制
【解题思路】
如果k为2,那么这个数列
第1项为202^020第2项为212^121第3项为21+202^1 + 2^021+20第4项为222^222第i项为i在二进制下的按位权展开式,其值为i。
输入n和k后,数字n在二进制下做数字拆分,让n在二进制下的每一位数乘以一个“位权”,第i位的“位权”为ki−1k^{i-1}ki−1,然后加和。
【题解代码】
解法1:
#include<bits/stdc++.h>using namespace std;int main(){int k, n, q = 0;//q:指数 long long s = 0;cin >> k >> n;for(int a = n; a > 0; a /= 2, q++)s += pow(k, q) * (a % 2); //k的q次方:位权 cout << s;return 0;}