Pagini recente » Cod sursa (job #193499) | Cod sursa (job #374039) | Cod sursa (job #1301419) | Cod sursa (job #3325516) | Cod sursa (job #3349429)
lim=[0, 0]
with open("pavare2.in", "r") as f:
N, lim[0], lim[1]=[int(x) for x in f.readline().strip().split()]
K=[int(x) for x in f.readline().strip().split()][0]
dp=[[[0]*lim[i] for _ in range(N)] for i in range(2)]
dp[0][-1][0]=dp[1][-1][0]=1
for i in range(N-2, -1, -1):
for k in range(2):
dp[k][i][0]=sum(dp[1-k][i+1])
for j in range(1, lim[k]):
dp[k][i][j]=dp[k][i+1][j-1]
# for k in range(2):
# for i in range(N):
# for j in range(lim[k]):
# print(f"dp[{k}][{i}][{j}]={dp[k][i][j]}")
ans=[f"{sum(dp[0][0])+sum(dp[1][0])}"]
start=[lim[0]-1, 0]
end=[-1, lim[1]]
step=[-1, 1]
i=0
if sum(dp[0][0])>=K:
k=0
else:
K-=sum(dp[0][0])
k=1
sol=[]
while i<N:
for j in range(start[k], end[k], step[k]):
if dp[k][i][j]>=K:
break
K-=dp[k][i][j]
while j>-1:
sol.append(chr(k+ord('0')))
j-=1
i+=1
k=1-k
ans.append(''.join(sol))
with open("pavare2.out", "w") as g:
g.writelines("\n".join(ans))