#include<stdio.h>
int main(void){
int n,sum;
scanf("%d",&n);
sum=f(n)-f(n-1)-(n-1)*(1/2)*f(n-1);
printf("%d",sum);
return 0;
}
int f(int n)
{
int i,fact=1;
for(i=1;i<=n;i++)
fact=fact*i;
return fact;
}
输出的答案是错的,求纠正错误。
没看明白你算法种那个公式的出处,但是感觉没有那么简单。
int f(int n)
{
int i,a,b,fact;
for(i=1;i<=n;i++)
{
if(i==1)
{
a=0;
fact=a;
}
else if(i==2)
{
b=1;
fact=b;
}
else
{
fact=(i-1)*(a+b);
a=b;
b=fact;
}
}
return fact;
}
#include<stdio.h>
int main(void)
{
int n,sum;
scanf("%d",&n);
sum=f(n);
printf("%d",sum);
}