题意
FJ给他的奶牛用二进制进行编号,每个编号恰好包含K 个"1" (1 <= K <= 10),且必须是1开头。FJ按升序编号,第一个编号是由K个"1"组成。
请问第N(1 <= N <= 10^7)个编号是什么。
首先手动模拟样例,发现如果从后往前枚举,当第i位为1后面总的情况都是C(i-1,k),k为当前1个数,每确定一个1,k都会减小。
那么不就剩暴力了吗,预处理组合数,k只需要10个,所以底数即使开1e6个都是够的,也不要怕爆int,因为能爆int得数我们不可能取,所以爆int的数为负数,我们一个简单判断就可以剔除。唯独k为1的情况我们特别考虑,因为1的时候答案是固定的,长度必为n,而n可能是1e7,我们直接输出即可,k越大,最后长度越短。
//
// Created by SANZONG on 2021/8/9.
//
#include "bits/stdc++.h"
#define int long long
using namespace std;
const int mod = 1e9 + 7;
const int N = 2e6;
const int MAXN = 3e5 + 100;
int c[MAXN][