奇妙的数学
2014-03-24 00:52
127 查看
1. 约瑟夫(环)问题。
见于:/article/6305119.html
(数学推理部分开始)
2. 不用任何中间变量交换两个变量 a 和 b 的值。
方法1: 方法2:(适用整型)
a = a + b; a = a ^ b;
b = a - b; b = a ^ b;
a = a - b; a = a ^ b;
3. 不用加减乘除求两个整数的和。
求整数 a,b 的和:
步骤A:令 s = a ^ b,将所有位相加,有进位处置 0 (相当于舍弃进位相加)。—>步骤B
步骤B: 令 d = a & b,则求出所有进位,
若 d == 0,则无进位,返回 s;
若 d != 0,则返回(d << 1) + s 。即将所有进位左移一位,将问题化成 (d << 1) 与 s 求和的问题。可令 a = d << 1,b = s,—>步骤A。
例如:a = 5,b = 13 时:计算机内表示为,a =0101,b = 1101,
步骤A: s = a ^ b = (0101) ^ (1101) = 0 1000. —>步骤B
步骤B: d = a & b = (0101) & (1101) = 0101。 1,3 位有进位,d != 0,于是 a = s = 1000,b = d << 1 = 0101,—>步骤A2。
步骤A2: s = a ^ b = (1000) ^ (0101) = 1101。—>步骤B2
步骤B2: d = a & b = (1000) & (0101) = 0000。d == 0 ,无进位,返回 s = 1101. 即 13
(注:负数在计算机中用补码表示,但是负数之间也满足这种求和方法。正数与负数之间求和也适用于此方法)
代码:
/********** 注:超出边界时溢出 *************/ int add(int num1, int num2) { int sum = num1 ^ num2; while(num1 & num2) { num1 = (num1 & num2) << 1; num2 = sum; sum = num1 ^ num2; } return sum; } int main() { std::cout << add(0x7fffffff >> 1, (0x7fffffff >> 1)+1) << std::endl; return 0; }
结果:
#include <iostream> #include <string> using namespace std; string day[] = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; int base[7][7]; int circle[7] = {1, 1, 3, 6, 3, 6, 2}; inline void init() { for(int i = 1; i < 7; ++i) { int step = 1; base[i][0] = step % 7; for(int j = 1; j < 7; ++j) { step *= i; base[i][j] = step % 7; } } } int main() { int N; init(); while(cin >> N) { int sum = 0; N = N % 294; while(N) { int t1 = N % 7; int t2 = N % circle[t1]; sum = (sum + base[t1][t2]) % 7; --N; } cout << (day[sum]) << endl; } return 0; }
View Code
附:n x n 的正方形中,有多少长方形? 答案: C(n+1, 2)2-n(n+1)(2n+1)/6 = n(3n+2)(n2-1)/12 .
相关文章推荐
- leetcode459奇妙做法的数学解释
- zz非负矩阵分解:数学的奇妙力量
- 【NOIP模拟赛】【数学真奇妙系列】纸盒子
- bzoj 2813: 奇妙的Fibonacci 数学+线性筛
- 【NOIP模拟赛】【数学真奇妙】【递推】旅行者问题
- 从SVD到PCA——奇妙的数学游戏
- 奇妙的数学 · 完全平方数~总结
- CF859G,奇妙的数学题
- 网易笔试题之数字反转(数学真的奇妙)
- 非负矩阵分解:数学的奇妙力量
- 数学中奇妙的“金蝉脱壳”(转)
- 非负矩阵分解:数学的奇妙力量
- joj 2569: Musical Chairs (约瑟夫环 数学方法非迭代)
- 问题 A : 人生三大幻觉(组合数学)
- Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数学 质因数个数
- [从头学数学] 第223节 带着计算机去高考(十五)
- BZOJ 3997: [TJOI2015]组合数学
- Unique Paths && Unique Paths|| 尾递归的简化,数学排列组合,动态规划
- 数学排列组合,阶乘在线计算器
- 数学很好学!