str(i+1) 复制 ai 次拼接到答案中。
这直接实现了题目规则,正确且高效。小蓝定义了一种字符串生成规则:将正整数 n 表示为 k 进制。设其各位数字从低位到高位依次为 d0,d1,…,dm,满足 0≤di<k 且 dmeq0。对于每个 i,若 di>0,则生成数字 i+1 并重复 di 次。将所有生成的数字按 i 从大到小的顺序拼接起来,形成最终结果。
给定 n 和 k,请你计算该结果。
约束:1≤n≤1018,2≤k≤2×105。
输入只有一行,包含两个整数 n 和 k,用空格分隔。
输出一个整数,表示拼接后得到的十进制数。
输入
6 2
输出
32
说明
将 n=6 表示为 2 进制:610=1102,低位在前,各位数字依次为 d0=0,d1=1,d2=1。 按 i 从大到小处理:
3;2;32。输入
10 3
输出
31
说明
将 n=10 表示为 3 进制:1010=1013,低位在前,d0=1,d1=0,d2=1。 按 i 从大到小处理:
3;1。
拼接后得到 31。输入
100 10
输出
3
说明
将 n=100 表示为 10 进制:10010=10010,低位在前,d0=0,d1=0,d2=1。
只有 d2=1>0,生成数字 i+1=3 并重复 1 次,得到 3。其余位均为 0,跳过。最终结果为 3。
输入
1 2
输出
1
说明
将 n=1 表示为 2 进制:110=12,只有 d0=1。
d0>0,生成数字 0+1=1 并重复 1 次,得到 1。这是最小的边界情况。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册