惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
The Cloudflare Blog
IT之家
IT之家
雷峰网
雷峰网
小众软件
小众软件
博客园 - 叶小钗
博客园 - 聂微东
爱范儿
爱范儿
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
博客园 - 【当耐特】
V
V2EX
博客园_首页
T
Tailwind CSS Blog

博客园 - 珂儿

谈话技巧 用户中心 - 博客园 用户中心 - 博客园 【转载】 正则表达式 致谢 转载:Prototype.js的中文使用手册 C# Program Output Redirect Notes of Store Procedure 猫猫感冒了 从我的衣着改变说起 天无绝人之路 Job hunting准备系列一——关于搜索引擎技术 读书疑问汇总 算法题目汇总 How to influence people and win friends 项目经历总结——IBM实习总结 C++程序设计学习笔记 求职经验汇总
《编程之美》笔记
珂儿 · 2008-05-08 · via 博客园 - 珂儿

1,最大公约数问题解法三:已知x,y,求出他们的最大公约数。
     对于y和x来说,如果y=k*y1,x=k*x1。那么就有f(y,x)=k*f(y1,x1)。
     另外,如果x=p*x1,假设p是素数,并且y%p!=0(即y不能被p整除),那么f(x,y)=f(p*x1,y)=f(x1,y)。
     最简单的方法就是取p=2。
     若x,y都是偶数,则直接右移一位,得到子问题,原问题的解将是子问题的2倍;
     若x,y中一个偶数,一个奇数,则将偶数直接右移一位,原问题的解等价于子问题的解;
     若x,y都是奇数,则采用减法(即辗转相除法的原理)将问题化解为一奇一偶。
2,求二进制数中1的个数。这是一个看起来简单的问题,本书中有个比较精妙的做法。
     解法三:第一个思想是:采用位运算,不用除法和取模运算
                第二个思想是:假设数种有M个1,则只需要做M次运算
     代码如下:
     int Count(int v){
        int num = 0;
        while(v){
            v&=(v-1);
            num++;
        }
    }
3,N!的问题:问题1:N!的末尾有多少个0(因子5的个数)。问题2:N!的末尾最开始的一个1是第几位(二进制表示时)?

posted on 2008-05-08 16:21  珂儿  阅读(372)  评论()    收藏  举报