Pagini recente » Cod sursa (job #956472) | Cod sursa (job #233039) | Cod sursa (job #1353404) | Cod sursa (job #2633430) | Cod sursa (job #2030141)
#include <fstream>
using namespace std;
ifstream fin("perm.in");
ofstream fout("perm.out");
int i,j,n,k,p1[201][400],p2[201][400],temp[2][400],j2;
void add(int A[][400], int x1, int B[][400], int x2, int C[][400], int x3)
{
int i, t = 0;
for (i=1; i<=A[x1][0] || i<=B[x2][0] || t; i++)
{
if(A[x1][0] >= i)
{
t=t + A[x1][i];
}
if(B[x2][0] >= i)
{
t=t + B[x2][i];
}
//t=t + A[x1][i]+B[x2][i];
C[x3][i] = t%10;
t=t/10;
}
C[x3][0] = i - 1;
}
void mul(int A[][400], int x1, int B, int C[][400], int x2)
{
int i, t = 0;
for (i = 1; i <= A[x1][0] || t; i++)
{
if(A[x1][0] >= i)
{
t =t + A[x1][i]*B;
}
C[x2][i] = t%10;
t=t/10;
}
C[x2][0] = i - 1;
}
int main()
{
fin>>n>>k;
p1[1][0]=1;p1[1][1]=1;
for(i=2;i<=n;i++)
{
for(j=1;j<=i;j++)
{
mul(p1, j, i-1, temp, 1);
add(temp, 1, p1, j-1, p2, j);
//p2[j]=p1[j-1] + p1[j]*(i-1);
}
for(j=1;j<=i;j++)
{
for(j2=1;j2<=p2[j][0];j2++)
{
p1[j][j2]=p2[j][j2];
}
p1[j][0]=p2[j][0];
p2[j][0]=0;
//p1[j]=p2[j];
//p2[j] = 0;
}
}
for(i=p1[k][0];i>=1;i--)
{
fout<<p1[k][i];
}
//fout<<p1[k];
return 0;
}