![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程之美读书笔记
文章平均质量分 57
zhangwei1120112119
这个作者很懒,什么都没留下…
展开
-
中国象棋将帅问题
问题出自编程之美问题描述:用A表示将,B表示帅,求A,B所有合法位置,要求程序中只能使用一个字节存储变量将A所有可能的位置按上图编号解法:很容易想到用二进制位表示位置一共9个位置,4个二进制位足够表示,A和B一个8个二进制位,刚好一个字节代码如下#includeint main(){ unsigned char opt=0; for(;(opt&0x原创 2013-11-27 22:26:35 · 549 阅读 · 0 评论 -
只考加法的面试题
问题出自编程之美。解法是自己思路3=1+29=4+59=2+3+4问题:对于正整数n,输出所有可能连续自然数(至少两个)之和的算式分析正整数2,3,9,18,30分析2,无解分析3,3=1+2,1个解分析9,9=2+3+4分析18,对其进行因式分解,18=2*3*3设定解中有2个数,无解设定解中有3个数,则有2*3-1,2*3,2*3+1构成一个解原创 2014-01-03 16:41:04 · 615 阅读 · 0 评论 -
找符合条件的整数
问题出自编程之美,感觉书上讲的比较晦涩,本人最喜欢通过例子来学习了问题:给定一个正整数N,求一个最小的正整数M,使得N*M的十进制表示形式里只有1和0这里分析N=13的情况由于N*M比M有特征,所以从N*M入手设ans=N*M当ans有1位时,ans=1,ans%N=1当ans有2位时,ans=10,11,ans%N=10,11当ans有3位时,ans=100,101,原创 2014-01-02 20:04:00 · 699 阅读 · 0 评论 -
最大公约数问题
问题与解法均出自编程之美求两数A和B的最大公约数辗转相除法因为有模运算,所以摒弃不用分析a和b若a和b均为偶数,则a和b的最大公约数f(a,b)=2*f(a>>1,b>>1)若a和b为一奇一偶,设a为偶,则a和b的最大公钥数f(a,b)=f(a>>1,b)若a和b均为奇数,则f(a,b)=f(b,a-b)这样不断减小a和b,最终得到结果这种方法的优点在于没有取模运算转载 2014-01-02 10:40:21 · 594 阅读 · 0 评论 -
1的数目
问题出自编程之美给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有1的个数解法:设正整数N,a1a2a3...an为其十进制数表示出现的所有1的个数,等于a1,a2,a3....an上出现的所有的1的个数总和我们先分析an上出现的1的个数首先看几个例子34,245对于34,个位上为1的数有1,11,21,31,总数为4个对于245,个原创 2014-01-01 21:06:40 · 534 阅读 · 0 评论 -
精确表达浮点数
问题出自编程之美如何将无限循环小数表示成分数这里只考虑0.a1a2...ana1a2....an........的情况a1a2...an为循环节设N=0.a1a2....anN*10^n=a1a2...an+N得N(10^n-1)=a1a2...anN=a1a2...an/(10^n-1)比如对于无限循环小数0.(142857)循环节为142857转原创 2014-01-02 10:13:58 · 667 阅读 · 0 评论 -
水王扩展
问题出自编程之美有三个发帖很多的ID,发帖数目都超过了总数的1/4,快速找到这三个ID一开始想着证明每次删除四个不同的ID后,这三个ID占的百分比仍超过1/4,后来证明失败实际上以上证明是没有意义的每次选取四个不同的ID删去,最后一定会只剩下三个ID这三个ID就是解原创 2013-12-28 22:27:11 · 600 阅读 · 0 评论 -
阶乘
问题出自编程之美问题一:n!的末尾的0的个数解法:设n!素数分解后为n!=(2^x1)*(3^x2)*(5^x3)*(7^x4)*...显然,n!末尾0的个数只和x1,x3有关即末尾0的个数为min(x1,x3)于是原问题转化为了求x1和x3求x1:用一个例子来说明过程,设n=10则n!=1*2*3*4*5*6*7*8*9*10n/2=5 即2,原创 2013-12-28 21:57:58 · 557 阅读 · 0 评论 -
快速找出故障机器
问题出自编程之美,简化问题描述问题1:有n数a1,a2,,,,,an,其中只有一个数只出现了一次,其余数均出现了两次,求出这个数,比如7 7 6 6 3,答案是3利用异或运算,举上例说明7,7,6,6,3在位运算时的表示为111,111,110,110,011将各位异或,第一位1^1^1^1^0=0第二位1^1^1^1^1=1第三位1^1^0^0^1=1原创 2013-11-28 23:04:35 · 752 阅读 · 0 评论 -
蚂蚁爬杆
问题出自编程之美。本文主要针对扩展扩展1:第i个蚂蚁,什么时候走出木杆思路来自http://lam8da.sinaapp.com/?p=11假设蚂蚁从左至右编号为1到n,一共n只蚂蚁设每只蚂蚁都背着一袋粮食,也从左至右编号为1到n设两只蚂蚁相碰时,掉头并交换粮食。由书上的解决原问题的思路,我们可以O(n)时间求出所有粮食走出木杆的时间设一开始有m只蚂蚁的方向向左,n原创 2014-01-05 20:25:11 · 858 阅读 · 0 评论