描述
课堂上小明学会了用计算机求出N的阶乘,回到家后就对妹妹炫耀起来。
为了不让哥哥太自满,妹妹给小明出了个问题“既然你会求N的阶乘,
那么你帮我算算1!+2!-3!+4!-5!+……N!”。这下可把小明难住了,聪明的你能帮帮他吗?
输入第一行输入一个整数 T(0<T<=20),代表有 T 组测试数据。
之后有 T 行,每行输入一个正整数N(0<N<=20)。
输出每组测试数据占一行,输出1!+2!-3!+…..N!的值。
样例输入
2
2
4
样例输出
3
21
课堂上小明学会了用计算机求出N的阶乘,回到家后就对妹妹炫耀起来。
为了不让哥哥太自满,妹妹给小明出了个问题“既然你会求N的阶乘,
那么你帮我算算1!+2!-3!+4!-5!+……N!”。这下可把小明难住了,聪明的你能帮帮他吗?
输入第一行输入一个整数 T(0<T<=20),代表有 T 组测试数据。
之后有 T 行,每行输入一个正整数N(0<N<=20)。
输出每组测试数据占一行,输出1!+2!-3!+…..N!的值。
样例输入
2
2
4
样例输出
3
21
#include<stdio.h>
long long fun(long long n)//求数的阶乘
{
if(n==1)
return n*1;
if(n>1)
return n*fun(n-1);
}
int main()
{
int N,n,i;
long long t;
scanf("%d",&N);
while(N--)
{
t=0;
scanf("%d",&n);
if(n==0)
{
t=1;
}
else
{
t=fun(1);
for(i=2;i<=n;i++)
{
if(i%2)
{
t=t-fun(i);
}
else
{
t=t+fun(i);
}
}
}
printf("%lld\n",t);
}
return 0;
}