1 条题解

  • 0
    @ 2025-8-24 21:20:30

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar hongzy
    **

    搬运于2025-08-24 21:20:29,当前版本为作者最后更新于2017-12-19 13:08:36,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    (题目为啥要强调用十进制输出呢,明明就是故意提醒)

    分析一下样例

    k=3k=3时,数列为:1,3,4,9,10,12,13..1,3,4,9,10,12,13..

    转换成三进制就是:1,10,11,100,101,110,111..1,10,11,100,101,110,111..

    看起来像是二进制,转化成十进制看看

    1,2,3,4,5,6,7..1,2,3,4,5,6,7..

    显然,第nn项就是nn.

    程序就把这个过程逆回去,先把nn转换成二进制,再把它当成KK进制,重新转换为十进制.

    #include <iostream>
    #include <stack>
    #include <cmath>
    using namespace std;
    
    long long k, n, ans;
    stack<int> S;
    
    int main() {
        cin >> k >> n;
        while(n) S.push(n & 1), n >>= 1;
        while(!S.empty()) ans += S.top() * pow(k, S.size()-1), S.pop();
        cout << ans << endl;
        return 0;
    }
    

    upd\text{upd} : 2018/10/262018/10/26 添加LaTeX\text{LaTeX}公式,麻烦管理员通过审核

    • 1

    信息

    ID
    64
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者