usaco 二进制

来源:互联网 发布:淘宝店运营方案怎么写 编辑:程序博客网 时间:2024/06/07 14:37
/*#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
using namespace std;
int f[35][35],n,l,m,c[35][35],dp[35][35];
int main(){
 scanf("%d%d%d",&n,&l,&m);
 c[0][0]=1;
 if(m==1){
  for(int i=n;i>=1;i--) cout<<0;
  cout<<endl; return 0;
 }
 m--;
 for(int i=1;i<=n;i++){
  c[i][0]=c[i][i]=1;
  for(int j=1;j<i;j++){
   c[i][j]=c[i-1][j]+c[i-1][j-1];
  }
 }
 for(int i=1;i<=n;i++){
  for(int j=1;j<=l;j++){
   dp[i][j]=c[i-1][j-1];
  }
 }
 cout<<"dp: "<<endl;
 for(int i=1;i<=n;i++){
  int num=0;
  for(int j=1;j<=l;j++){
   num+=dp[i][j];
   cout<<dp[i][j]<<' ';
  }
  cout<<"num "<<num<<endl;
 }
 int cur,now=m,cnt,cnt1;
 for(int i=1;i<=n;i++){
  int num=0;
  for(int j=1;j<=l;j++){
   num+=dp[i][j];
  }
  if(num>now){
   cur=i; cnt=num;  break;
  }
  else{
   if(num==now){
    int res=l;
    for(int j=m;j>=1;j--){
     if(res){
      cout<<1;
      --res;
     }
     else cout<<0;
    }
    return 0;
   }
   else now-=num;
  }
 }
 cout<<1;
 int i,len=1;
 for(i=cur-1;i>=1;i--){
  int num=0;
  for(int j=1;j<=l-len;j++){
   num+=dp[i][j];
  }
  if(cnt-num>now){
   cout<<0; continue;
  }
  else{
   cout<<1; ++len;
  }
 }
 cout<<endl;
 return 0;
}*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
using namespace std;
int f[35][35],cur,ans[35],n,nn,l,m,c[35][35],dp[35][35];
void dfs(int x,int y,int z){
 if(z==0){
  for(int i=nn;i>=1;i--)
   cout<<ans[i];
  cout<<endl;
  return ;
 }
 int num=0,las,ch=false;
 for(int i=0;i<=x;i++){
  las=num;
  num=0;
  for(int j=0;j<=z;j++){
   num+=f[i][j];
   if(num>=y){
    ans[i]=1; ch=true; dfs(x-1,num-y,z-1); return;
   }
  }
 }
}
int main(){
 scanf("%d%d%d",&n,&l,&m);
 f[0][0]=1;
 for(int j=1;j<=n;j++)f[j][0]=1;
 for(int i=1;i<=n;i++){
  f[i][0]=f[i][i]=1;
  for(int j=0;j<=i;j++){
   f[i][j]=f[i-1][j]+f[i-1][j-1];
  }
 }
 for(int i=1;i<=n;i++){
  for(int j=0;j<=i;j++){
   cout<<f[i][j]<<' ';
  }
  cout<<endl;
 }
 dfs(n,m,l);
 return 0;
}
原创粉丝点击