博客
关于我
洛谷P1134 阶乘问题
阅读量:337 次
发布时间:2019-03-04

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

1 数论真是奇妙……写过:求N!后面有多少个0这个问题Coder可能多少会有点想法,我再说一下吧,能贡献0的只有25,(10也可以分成25),而2个数不少于5的个数(事实上只有N==1时才取等于)所以只需要对1~N之间的个数(包含)进行整数分解,累加因子为5的个数,代码可以写成这样
int sum=0;while(N){   	sum+=(N/5);	N/=5;)
1 1~N中显然是5的倍数的有N/5个,当然有的数可能含多个因子5,含两个5的个数为N/25,三个的为N/125……,这不正是上述代码嘛,好了,回到这一题, 这一题的结果肯定是2,4,6,8,中的一个,至于为什么,上面我们说了,因子2的个数大于5的个数(N==1除外),一部分的2和5一起贡献的0,只要还有一个2,那么所求的数一定是偶数,对吧,那我们就可以现将多余2的个数存起来,然后将那些剔除因子2和5的数暴力求出来,这是可以放心Mod10了,再将那些2乘起来,就可以了,
#pragma GCC optimize(2)#include
using namespace std;#define pi acos(-1.0)#define e exp(1.0)typedef long long unsigned ll;const ll maxn=5e7+7;ll N,M;ll Han(ll n){ ll i,j; while(n%2==0) { M++; n/=2; } while(n%5==0) { M--; n/=5; } return n;}ll Pow_mod(ll a,ll b){ ll mul=1; while(b) { if(b&1) mul=mul*a%10; a=a*a%10; b>>=1; } return mul; } int main(){ // freopen(".../.txt","w",stdout); ios::sync_with_stdio(false); while(cin>>N) { if(N==1)//特判 { cout<<"1"<

转载地址:http://qjph.baihongyu.com/

你可能感兴趣的文章
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>