博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阶乘之和
阅读量:4576 次
发布时间:2019-06-08

本文共 1241 字,大约阅读时间需要 4 分钟。

Description

描述

阶乘是一个很恐怖的东西哦~
N的阶乘=1*2*3*4*…*N。当N很大时,阶乘的长度自然很大。
当然,我们需要的程序不是要你写出N的阶乘的具体数字,而是要你给出N的阶乘的末尾0的个数和末尾去除0的数字。简单吧~~~~(传说中有个叫YYD的人不屑于做这个题目!!!)

Input

一行 N

Output

两行,第一行为0的个数,第二行为末尾去除0的数字。

Sample Input

 

10

 

Sample Output

 

28

 

Hint

10!=3628800,末尾有2个0,去处0后末尾的数字为8。

数据范围
0<=N<=10^16
对于30%的数据 N<=5000000
对于100%的数据 N<=10^16 

 

题解:http://www.cnblogs.com/jiangjun/articles/2491276.html

最后用中国剩余定理合并一下就行了

code:

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 typedef long long int64; 8 char ch; 9 const int64 fac[5]={
1,1,2,6,24};10 const int64 power[4]={
1,3,9,27};11 int64 n,c,ans;12 bool ok;13 void read(int64 &x){14 for (ok=0,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=1;15 for (x=0;isdigit(ch);x=x*10+ch-'0',ch=getchar());16 if (ok) x=-x;17 }18 int main(){19 read(n);20 if (n==0||n==1){puts("0"),puts("1");return 0;}21 ans=1;22 while (n) c+=n/5,ans*=fac[n%5],ans%=5,n/=5;23 if (c&1) ans*=-1,ans+=5,ans%=5;24 printf("%I64d\n",c);25 printf("%I64d\n",6*ans*power[c%4]%10);26 return 0;27 }

 

转载于:https://www.cnblogs.com/chenyushuo/p/4910291.html

你可能感兴趣的文章
有序列表ol和定义列表dl,dt,dd
查看>>
联想小新Air 15 安装黑苹果macOS High Sierra 10.13.6过程
查看>>
公共POI导出Excel方法–java
查看>>
次短路——Dijkstra
查看>>
C++ compile issue
查看>>
安卓中的shape
查看>>
站立会议总结08
查看>>
C++ stat判断路径是文件还是目录
查看>>
动态代理
查看>>
ie11下,接受postmessage返回的信息
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_13-Java继承的三个特点...
查看>>
中小企业实施OA的意义
查看>>
es6 数组
查看>>
JS判断是否在微信浏览器打开
查看>>
javascript中typeof和instanceof的区别
查看>>
数据结构-数组1
查看>>
jquery之别踩白块游戏的实现
查看>>
转载Eclipse中Maven WEB工程tomcat项目添加调试
查看>>
caller和callee的解析与使用-型参与实参的访问
查看>>
[转]JavaScript线程运行机制
查看>>