Pagini recente » Cod sursa (job #775048) | Cod sursa (job #1361858) | Cod sursa (job #751007) | Cod sursa (job #2106010) | Cod sursa (job #2322963)
#include <fstream>
using namespace std;
long long n, p, q, k, lng, st, i, j;
long long a[105][105], b[105][105];
int main () {
ifstream fin ("pavare2.in");
ofstream fout ("pavare2.out");
fin>>n>>p>>q;
fin>>k;
a[0][0]=1;
b[0][0]=1;
a[1][1]=1;
a[1][0]=1;
b[1][1]=1;
b[1][0]=1;
for (i=2;i<=n;i++) {
for (j=1;j<=p;j++) {
a[i][j]=b[i-j][0];
a[i][0]+=a[i][j];
}
for (j=1;j<=q;j++) {
b[i][j]=a[i-j][0];
b[i][0]+=b[i][j];
}
}
fout<<a[n][0]+b[n][0]<<"\n";
lng=n;
st=0;
while (lng!=0) {
if (st==0) {
if (k>a[lng][0]) {
k-=a[lng][0];
st=1-st;
} else {
for (i=p;i>=1;i--) {
if (a[lng][i]>=k) {
for (int cnt=1;cnt<=i;cnt++)
fout<<st;
lng-=i;
st=1-st;
break;
} else {
k=k-a[lng][i];
}
}
}
} else {
if (k>b[lng][0]) {
k-=b[lng][0];
st=1-st;
} else {
for (i=1;i<=q;i++) {
if (b[lng][i]>=k) {
for (int cnt=1;cnt<=i;cnt++)
fout<<st;
lng-=i;
st=1-st;
break;
} else {
k=k-b[lng][i];
}
}
}
}
}
return 0;
}