![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
组合数学和数论
yake25
计算机
展开
-
编程实现两个正整数的除法,当然不能用除法操作符
这道题目,怎么说呢,其实算法还是很好理解的,常规的想,100/7,可以试着7*1, 7*2, 7*3, ... ,7*14做,但这样子太慢了。于是有人说以2的指数次递增,也就是7*1,7*2,7*4,7*8,好了,因为7*16>100,所以这个时候就100-7*8=44接着下一次循环。 可以这里理解了。100 = 7 * 8 + 7 * 6 + 2. 有人说可以二分??不知道怎么二。。上界如何原创 2012-03-12 20:13:34 · 2033 阅读 · 0 评论 -
给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
#include #include #include #include #include using namespace std; int rand5() { //随机生成[1-5]之间的随机数 return (rand() % 5 + 1); } int rand7_1() { //随机生成[1-7]之间的随机数 int a; while((a = rand5() * 5 + ra原创 2012-03-12 20:14:14 · 2603 阅读 · 0 评论 -
1024! 末尾有多少个0?
末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。 是5的倍数的数有: 1024 / 5 = 204个 是25的倍数的数有:1024 / 25 = 40个 是125的倍数的数有:1024 / 125 = 8个 是625的倍数的数有:1024 / 625 = 1个 所以1024! 中总共有204+40+8+1=253个因子5。 也原创 2012-03-12 20:14:46 · 596 阅读 · 0 评论 -
计算n bit的整数中有多少bit 为1
例如“7”,里面有3个1:111; 移位,位运算比较方便。 n & (n-1),那么二进制n从右往左第一个1变为0;#include using namespace std; int main() { int n; while(cin >> n) { int cnt = 0; /* while(n) { if(n & 1 == 1) cnt++;原创 2012-03-14 20:21:59 · 808 阅读 · 0 评论