Pagini recente » Cod sursa (job #552504) | Cod sursa (job #848908) | Cod sursa (job #3170547) | Cod sursa (job #1798101) | Cod sursa (job #1938027)
#include <fstream>
using namespace std;
ifstream f("expresii2.in");
ofstream g("expresii2.out");
int n,m,i,j,k,p,y,s[35];
long long x,sol,c[35][35][35];
int main()
{
f>>n>>m>>x;
c[0][1][0]=1;
for(i=0;i<n;++i)
for(j=0;j<=n;++j)
for(k=0;k<m+3;++k)
if(c[i][j][k])
{
if(j<n-i) c[i+1][j][m+2]+=c[i][j][k];
if(j>1||(j==1&&i==n-1)) for(p=0;p<m;++p) c[i+1][j-1][p]+=c[i][j][k];
if(j<n-i-1)
{
c[i+1][j+1][m]+=c[i][j][k];
c[i+1][j+1][m+1]+=c[i][j][k];
}
}
for(j=0;j<m+2;++j) sol+=c[n][0][j];
for(i=n;i;--i)
for(j=0;j<m+3;++j)
if(c[i][y][j]<x) x-=c[i][y][j];
else
{
s[n-i+1]=j;
if(j<m) y++;
else y-=(j<m+2);
j=m+3;
}
g<<sol<<'\n';
for(i=1;i<=n;++i)
if(s[i]<m) g<<char('A'+s[i]);
else if(s[i]==m) g<<'+';
else g<<(s[i]==m+1?'*':'!');
return 0;
}