特殊的阶乘考法

特殊的阶乘考法

也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,600 12的阶乘最右边的非零位为6。 写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。 注意:10,000,000!有2499999个零。

输入输出格式
输入描述:
1
仅一行包含一个正整数N。
输出描述:
1
单独一行包含一个整数表示最右边的非零位的值。
输入输出样例
输入样例#:
1
12
输出样例#:
1
6
AC代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
long int ans=1,cnt;
for(int i=1;i<=n;++i)
{
ans*=i;

//去掉末尾的0,因为求的是最右边的非零位
while(ans%10==0)
ans/=10;

//
ans=ans%1000000000000;//0不能超过11位,否则WA?
}

//此时求出来的不仅仅有非零的最右边的个位,还有前面的一堆
//因此要取个位
cnt=ans%10;
printf("%d",cnt);
}
凡希 wechat
喜欢所以热爱,坚持干货分享,欢迎订阅我的微信公众号
呐,请我吃辣条