输入一个正整数n的值(n不超过20),编程输出n!(n的阶乘)。因为阶乘数据较大,程序中的整数请定义成long long型。
怎么写
for循环,连续乘
#include <stdio.h>
int main()
{
long long jc = 1;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
jc *= i;
printf("%lld",jc);
}
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
long long i = 1;
int fact = 1;
for (i = 1; i <= n; i++) {
fact *= i;
}
printf("%d!=%d\n", n, fact);
return 0;
}
只需要将每次阶乘上去的积去0(对10 取余)即可,最后只保留后三位,阶乘完了之后再对10取余,取最右边的那一位数字。
代码:
#include<stdio.h>
int main()
{
long long int n;
int t=1;
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
t*=i;
while(t%10==0)//去掉尾数0
t/=10;
t=t%1000;//对该阶乘保留后3位尾数
}
t%=10;
printf("%d\n",t);
return 0;
}