笔试/面试题
jokers_i
这个作者很懒,什么都没留下…
展开
-
两个数不同的位个数
《编程之美》里的一道思考题:给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A 和B 的二进制表示中有多少位是不同的?#include inline int BitsOf(unsigned int n){ int cnt = 0; while(n) { n&=n-1; cnt++; } return cnt;原创 2012-11-09 11:13:53 · 853 阅读 · 0 评论 -
不限制位数的大数乘法
#include #include using std::cout;using std::cin;using std::string;using std::ostream;using std::istream;class BigNum{public: friend ostream& operator<<(ostream& os,const BigNum& n); friend原创 2012-11-10 14:55:41 · 903 阅读 · 0 评论 -
N的阶乘二进制表示的最低位1的位置
《编程之美》中的一道题:#include #include using std::endl;using std::string;using std::cout;typedef unsigned long long ULLONG;//给定整数N,求N!的二进制表示中最低位1的位置templatestring ToBinary(T n){ if (n==0) { retu原创 2012-11-10 19:06:21 · 2769 阅读 · 2 评论 -
无限循环小数的分数形式
在《编程之美》里看到这个方法。对于混循环小数的情况,计算公式是:0.a1a2...an(b1b2...bm)=(a1a2...an+(b1b2...bm)/(10m-1))/(10n-1);如果是纯循环小数:0.(a1a2...an)=(a1a2...an)/(10n-1)推导过程很简单:设X=0.(a1a2...an)10n*X = a1a2...an+X原创 2012-11-14 08:58:09 · 1583 阅读 · 0 评论 -
全排序输出
输出给定字符串的所有顺序:如"123",输出:123,132,213,231,312,321递归解法如下:#include #include using std::cout;using std::cin;using std::endl;using std::string;void PrintOrder(const string& pre,const string原创 2012-11-23 15:57:33 · 2162 阅读 · 1 评论