博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程之美 set 1 不要被阶乘吓倒
阅读量:5068 次
发布时间:2019-06-12

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

总结

1. 使用加法解决指数问题时, 可用背包问题的变形

2. 题目用到的公式和求解 1~N 中 1 出现的次数的公式类似

 

题目

1. 给定一个整数 N, 那么 N 的阶乘 N! 末尾有多少个 0 呢

2. 求解 N! 的二进制表示中最低位 1 的位置

 

思路

1. 第一道题相当于求解 N! 分别是 2^a 和 5 ^b, 第二道题是 2^a

2. 公式: Z = [N/5] + [N/5^2] +... [N/5] 表示不大于 N 的数中 5 的倍数贡献一个 5, [N/5^2]表示不大于 N 的数中, 5^2 再贡献一个5

2. 但第一题有一个可以优化的地方, 因为 b < a, 所以只要关注 5^b 即可

 

代码

 

int ret = 0;while(N) {	ret += N/5;	N /= 5;}int ret = 0;while(N) {        N >>= 1;        ret += N;  }

 

  

 

转载于:https://www.cnblogs.com/xinsheng/p/3564615.html

你可能感兴趣的文章
SelectSort 选择排序
查看>>
关于android 加载https网页的问题
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
小知识:js如何更改css样式
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
Java中的String,StringBuilder,StringBuffer三者的区别
查看>>
Laxcus大数据管理系统2.0(12)- 第十章 运行
查看>>
Python爬虫
查看>>
消息队列的理解总结
查看>>
LDA
查看>>
轻量级Mysql Sharding中间件——Shark
查看>>
python的列表与shell的数组
查看>>
移动国家号(MCC)
查看>>
关于TFS2010使用常见问题
查看>>