Pagini recente » Cod sursa (job #730154) | Cod sursa (job #2716965) | Cod sursa (job #3207339) | Cod sursa (job #1407237) | Cod sursa (job #2305358)
#include<fstream>
#include<cstring>
#include<algorithm>
#define MAXN 105
#define NRC 35
using namespace std;
long long n,a,b,k,A[MAXN][MAXN],B[MAXN][MAXN],i,j;
ifstream f("pavare2.in");
ofstream g("pavare2.out");
void Citire(){
f>>n>>a>>b;
f>>k;
}
void Calculare_a(){
int i,j;
A[0][0]=B[0][0]=1;
A[1][1]=B[1][1]=B[1][0]=A[1][0]=1;
for(i=2;i<=n;i++){
for(j=1;j<=a&&j<=i;j++){
A[i][j]=B[i-j][0];
A[i][0]+=A[i][j];
}
for(j=1;j<=b&&j<=i;j++){
B[i][j]=A[i-j][0];
B[i][0]+=B[i][j];
}
}
g<<A[n][0]+B[n][0]<<'\n';
}
void DezmembrareK(){
int l=n,stare=0;
while(l>0)
{
if(stare==0){
for(i=min(n,l);i>=1;i--)
if(k>A[l][i])
k=k-A[l][i];
else
{
for(j=1;j<=i;j++)
g<<0;
l=l-i;
break;
}
stare=1;
}
else{
for(i=1;i<=min(n,l);i++)
if(k>B[l][i])
k-=B[l][i];
else
{
for(j=1;j<=i;j++)
g<<1;
l=l-i;
break;
}
stare=0;
}
}
}
int main(){
Citire();
Calculare_a();
DezmembrareK();
return 0;
}