RPG的错排
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 70 Accepted Submission(s) : 14
1 2 0
1 1
reference code:
#include <stdio.h>
#define N 100
long long arrange(int n, int m)
{
long long i = 1;
long long j = 1;
int k;
for ( k=0; k<m; k++ )
{
i *= n-k;
j *= k+1;
}
return i / j;
}
int main(void)
{
int n;
int i;
int temp;
long long a[N] = {0, 1};
long long result;
while ( scanf("%d",&n) != EOF )
{
result = 0;
if ( n == 0 )
{
break;
}
if ( n == 1 || n == 2 || n == 3 )
{
printf("1\n");
continue;
}
temp = n / 2;
for ( i=2; i<temp; i++ )
{
a[i] = i * (a[i-1] + a[i-2]);
}
for ( i=temp; i>1; i-- )
{
result += arrange(n, i) * a[i-1];
}
printf("%lld\n", result+1);
}
return 0;
}