Acwing 428

可以找到规律,将第 N 项的 N 对应的二进制表示,转换为以 k 为基底的数即可。
N=1=1 ----> 1 ----> \(a^b\)
N=2=2 ----> 10 ----> \(3^1\)
N=3=3 ----> 11 ----> \(3^0\)+\(3^1\)
N=4=4 ----> 100 ----> \(3^2\)
N=5=5 ----> 101 ----> \(3^2\)+\(3^0\)
N=6=6 ----> 110 ----> \(3^1\)+3\(^2\)
N=7=7 ----> 111 ----> \(3^0\)+\(3^1\)+\(3^2\)

代码

#include <iostream>

using namespace std;

int main()
{
    int k, n;
    cin >> k >> n;
    int res = 0, base = 1;
    while (n)
    {
        res += n % 2 * base;
        base *= k;
        n /= 2;
    }
    cout << res << endl;
    return 0;
}
posted @ 2022-04-30 19:42  似是笼中雀  阅读(65)  评论(0)    收藏  举报