北大OJ_1006题:生理周期
2015-06-19 13:12
295 查看
#include <iostream> using namespace std; int main() { int p, e, i, d; int nCase = 0; while( cin >> p >> e >> i >> d ) { if ( p == -1 && e == -1 && i == -1 && d == -1 ) { break; } p %= 23; e %= 28; i %= 33; while ( i <= d ) { i += 33; } while ( true ) { if ( ( (i - p) % 23 == 0 ) && ( (i - e) % 28 == 0 ) ) { break; } i += 33; } ++nCase; cout << "Case " << nCase << ": the next triple peak occurs in " << i - d << " days." << endl; } return 0; }
参考文章:http://blog.sina.com.cn/s/blog_7c9b29d50100t7st.html
在问题的数学模型中有多个条件需要满足时,可以采用逐步减小搜索空间的方法提高计算的效率。一次按照条件一、条件二、······、进行搜索。在最初的搜索空间上按条件一进行判定。除最后一次外,每次搜索都找到符合当前条件的全部答案,将他们作为下一个条件判定的搜索空间。
#include <iostream> using namespace std; int main() { int p, e, i, d; int nCase = 0; while( cin >> p >> e >> i >> d ) { if ( p == -1 && e == -1 && i == -1 && d == -1 ) { break; } int k = d + 1; for ( ; k <= 21252; ++k ) if ( ( k - p ) % 23 == 0 ) break; for ( ; k <= 21252; k += 23 ) if ( ( k - e ) % 28 == 0 ) break; for( ; k <= 21252; k += 23*28 ) if ( ( k - i ) % 33 == 0 ) break; ++nCase; cout << "Case " << nCase << ": the next triple peak occurs in " << k - d << " days." << endl; } return 0; }
作者:山丘儿
转载请标明出处,谢谢。原文地址:http://blog.csdn.net/s634772208/article/details/46560511
相关文章推荐
- todo
- 技术演绎之 [ hadoop] 起源
- java笔记17 集合框架 List Set 泛型
- LeetCode | Single Number II
- java设计模式大全 Design pattern samples in Java(最经典最全的资料)
- Windows C编程操作鼠标键盘
- 新GRE考试词汇相关的俚语:dirty pool和down and dir
- SAT阅读真题小说节选
- 【捕牛技巧】
- 获取指定范围的随机数
- ofbiz中的factory模式运用
- 做T技巧
- 北大OJ_1005题:I Think I Need a Houseboat
- curl命令模拟浏览器响应时间分析
- securecrt启动mini2440卡在Please press Enter to activate this console问题已解决
- windows 7 64位下配置mysql64位免安装版
- javascript操作DOM的方法与属性
- tomcat共享lib里面的jar包
- 关于蓝牙的几个类图
- struct和class区别