Sicily 1344. 数列

来源:互联网 发布:linux tail 最后一页 编辑:程序博客网 时间:2024/04/24 07:40

http://soj.me/1344

 看这下面三个序列:

1,   3,    4,    9,    10,    12,    13,…

30, 31, 30+31,   32, 30+32, 31+3230+31+32,…

1,  10,     11,   100,    101,     110,   111,...


是不是有种恍然大悟的感觉?所以,要求第N个数,你只要把N转为二进制,然后把所有 1 对应的权加起来就行了


#include <iostream>using namespace std;int main(){int k,n;while(cin>>k>>n){int ans = 0,m = 1;while(n){ans += (n%2)*m;m *= k;n /= 2;}cout<<ans<<endl;}return 0;}