zoukankan      html  css  js  c++  java
  • 10.19T3

    Description

      FJ给他的奶牛用二进制进行编号,每个编号恰好包含K个"1" (1<=K<=10),且必须是1开头。FJ按升序编号,第一个编号的数是由K个连续的"1"组成。
      请问第N(1<=N<=10^7)个编号是什么。

    Input

      输入仅一行为两个整数N和K。

    Output

      输出仅一行为一个二进制串,表示第N个二进制编号。

    Sample Input

    7 3

    Sample Output

    10110

    Hint

    【样例解释】符合条件的二进制数的前四个是:111 1011 1101 1110
     
     
     
    肯定是跟组合数是有很大的关系
    然后我们就可以从后往前面贪心就可以了
    code:
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int c[5000][20];
     5 int main(){
     6     int n,k;
     7     cin>>n>>k;
     8     if(k==1){
     9         cout<<1;
    10         for(int i=1;i<n;i++)cout<<0;
    11         return 0;
    12     }
    13     bool flag=false;
    14     c[0][0]=1;
    15     for(int i=1;i<=4500;i++){
    16         c[i][0]=1;
    17         for(int j=1;j<=15;j++){
    18             c[i][j]=c[i-1][j]+c[i-1][j-1];
    19         }
    20     }
    21     for(int i=4500;i;i--){
    22         if(c[i-1][k]>=0&&c[i-1][k]<n)cout<<1,n-=c[i-1][k],flag=true,k--;
    23         else if(flag)cout<<0;
    24     }
    25     return 0;
    26 }

    over

  • 相关阅读:
    2019年8月16日_实验室学术论文研讨
    2019年8月2日实验室学术研讨会议
    2019年7月26日实验室学术研讨会议
    2019年7月12日实验室开展学术研讨
    hdu 5547
    hdu 1286
    hdu 1272
    hdu 1213
    poj 2533 LIS(最长上升序列)
    HUD 5773 LIS(最长上升序列)
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9818891.html
Copyright © 2011-2022 走看看