• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 求N!的二进制表示中最低位1的位置

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

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了二进制的最低位,8个字节含二进制位,二进制位,二进制符号位,二进制位运算等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:求N!的二进制表示中最低位1的位置
描述:

同样是<编程之美>中的题目. 解题思路是最低位1的未知等同于N!中质因数2的个数,即答案是N!中含有质因数2的个数+1,然后书上给出这么一个公式(假设N!中质因数2的个数为Z):

   Z=[N/2]+[N/4]+[N/8]+[N/16]+...

这个公式怎么证明? 书上给出一个提示([N/k]等于1,2,3,...,N中能被k整除的数的个数).


解决方案1:

这个证明其实挺简单的,仔细想想就能明白了。

针对 1..N 范围中的所有整数:

  1. N/(k^1) 表示包含因子 k 的整数数量
  2. N/(k^2) 表示包含因子 k*k 的整数数量。这些所有能被k*k整除的整数相乘会包含 2*N/(k^2) 个因子k,但因为这些数字也满足条件1,所以在条件1中已经计入一半,这里不需要再重复计入了。
  3. N/(k^3) 表示包含因子 k*k*k 的整数数量。这些所有能被k*k*k整除的整数相乘会包含 3*N/(k^3) 个因子k,但是1/3在条件1中计入,1/3在条件2中计入,因此这里也只需要计入一次。

你看,上面三个加起来,就等于在 1..N 中所有能被 k、k^2、k^3 整除的整数之积包含的因子k的个数。继续推广开来,找到一个 m ,使得 N < k^m ,那么 Z = sum(N/(k^i)) (1<=i<m) 就是 1..N 中所有数字的积(也就是N!)中包含因子k的个数。

顺便说一下,这个题目有个变种,供扩展思考:N!的十进制表示中末尾有几个零?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 求N!的二进制表示中最低位1的位置

相关文章

  • 2017-06-07 redis编译报错:cannotfind-lgcc_s
  • 2017-06-07 jboss-510GA如何声明bean既是remote也是local
  • 2017-06-07 基于jboss6的jmx开发
  • 2017-06-07 Scrapy的WebDriverWait问题
  • 2017-06-07 求不定积分有段正则搞不定,求帮忙
  • 2017-06-07 curl命令通过curl保存的cookie如何设置过期时间?
  • 2017-06-07 一个curl命令的python写法
  • 2017-06-07 能使用ftp上传吗
  • 2017-06-07 iOS:我获取挂在七牛上的plist文件中的爸版本号,有的时候获取的结果不一样
  • 2017-06-07 flask怎么使用nginx+uwsgi部署

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 为何我的站总是突然图片无法显示,重新上传图片链接又显示
    • CK编辑器图片上传到七牛
    • Laravel的users表有一个remember_token字段,它的作用是什么?
    • flask如何获取全部GET查询参数?
    • SHELLSEDAWK语法(shell)awk中正则表达式使用变量
    • 怎样统计某个空间内文件的数量?
    • (golang)xml:unsupportedtype:map[string]interface{}
    • 如果一个C函数,需要另一个C函数作参数,那Go怎么调它
    • 求救,pythonopen读文件没有权限应该怎么办啊?
    • linuxshell(shell)linux查找如何忽略目录

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有