信息学奥赛一本通 1937:【06NOIP普及组】数列 | 洛谷 P1062 [NOIP2006 普及组] 数列

【题目链接】

ybt 1937:【06NOIP普及组】数列
洛谷 P1062 [NOIP2006 普及组] 数列

【题目考点】

1. 数制

【解题思路】

如果k为2,那么这个数列

  • 第1项为 2 0 2^0 20
  • 第2项为 2 1 2^1 21
  • 第3项为 2 1 + 2 0 2^1 + 2^0 21+20
  • 第4项为 2 2 2^2 22
  • 第i项为i在二进制下的按位权展开式,其值为i。

输入n和k后,数字n在二进制下做数字拆分,让n在二进制下的每一位数乘以一个“位权”,第i位的“位权”为 k i − 1 k^{i-1} ki1,然后加和。

【题解代码】

解法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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值