Pagini recente » Cod sursa (job #1076383) | Cod sursa (job #1361697) | Cod sursa (job #628815) | Cod sursa (job #2538816) | Cod sursa (job #2937083)
#include <bits/stdc++.h>
using namespace std;
ifstream f("perm.in");
ofstream g("perm.out");
void adaug(short int A[], short int B[])
{
short int i,T=0;
A[0]=max(A[0],B[0]);
for(i=1; i<=A[0]; ++i)
{
A[i]+=B[i]+T;
T=A[i]/10;
A[i]%=10;
}
if(T) A[++A[0]]=T;
}
void mult(short int H[], short int X, short int nh[])
{
short int i,T=0;
nh[0]=H[0];
for(i=1; i<=H[0]; ++i)
{
nh[i]=H[i]*X+T;
T=nh[i]/10;
nh[i]=nh[i]%10;
}
while (T)
{
nh[++nh[0]]=T%10;
T/=10;
}
}
short int n,k,i,j,d[210][210][510];
int main()
{
f>>n>>k;
d[1][1][0]=1;
d[1][1][1]=1;
for(i=2; i<=n; ++i)
{
for(j=1; j<=min(i,k); ++j)
{
mult(d[i-1][j],i-1,d[i][j]);
adaug(d[i][j],d[i-1][j-1]);
}
}
for(i=d[n][k][0]; i>=1; --i)g<<d[n][k][i];
return 0;
}