算法竞赛入门经典 习题2-3剩余数定理+最大公约数/最小公倍数
2014-05-04 00:07
316 查看
//剩余数定理(韩信点兵) #include <iostream> int gcd(int a, int b){ if (a < b){ a = a ^ b; b = a ^ b; a = a ^ b; }//交换变量 int tmp = a % b; if (tmp == 0){ return b; } else{ return gcd(b, tmp); } } int main(int argc, char *argv[]){ int r[3] = { 2, 1, 6 }; //int r[3] = {2, 3, 2}; //std::cin >> r[0] >> r[1] >> r[2]; int d[3] = { 3, 5, 7 }; int k[3] = { 0, 0, 0 }; int lcm = d[0] * d[1] * d[2] / gcd(d[0], gcd(d[1], d[2])); for (int i = 0; i < 3; ++i){ for (int j = 2; j <= lcm; ++j){ std::cout << j << std::endl; if ((j % d[i % 3] == 0) && (j % d[(i + 1) % 3] == 0) && (j % d[(i + 2) % 3] == 1)){ k[i] = j; std::cout << "k[" << i << "]=" << k[i] << std::endl; std::cout << "k[" << i << "]*" << r[(i + 2) % 3] << "=" << k[i] * r[(i + 2) % 3] << std::endl; break; } } } std::cout << "ans=" << (k[0] * r[2] + k[1] * r[0] + k[2] * r[1]) % lcm << std::endl; return 0; }
相关文章推荐
- 算法竞赛入门经典 浮点数陷阱
- opencv轮廓高级应用(轮廓匹配,几何直方图)
- 不容易系列之(3)—— LELE的RPG难题 (HDU 2045)
- Eclipse快捷键
- 线程上下文切换的性能损耗测试
- 算法竞赛入门经典 运行时间统计
- 对adRegisterWLSListeners.pl 和 adSyncContext.pl 脚本的研究
- oracle 常用查询语句
- uva 401(简单字符处理题)
- 算法竞赛入门经典 浮点数的最大值和精度
- wpf 9张图片的连连看
- JAVA序列化基础知识
- 算法竞赛入门经典 例3-3竖式问题
- Mac OS上安装mongodb
- 点滴javascript(一)
- JavaScript动画工作原理之(完结篇)
- 算法竞赛入门经典 例3-1开灯问题
- IOS UITableView 列表实现与优化(一)
- Android应用程序如何避免内存泄漏以及如何检查泄漏原因
- MOOC程序设计期中考试1.9