POJ 2977 生理周期 解题报告
编号:2977
考查点:枚举
思路:之所以是枚举而不是穷举,原则是在循环的层数和循环的次数上进行优化,此题先找出符合p的,再根据这个作循环变量增加条件,继续即可找出符合题意的数字.
提交情况: 是按书上的思路AC的,这道题算是半道水题吧,代码很短,但是我试了一种效率较低的算法:每次+33的方法,一直WA,到现在还没想明白。
Source Code:
// POJ Grids 2977
#include < string .h >
#include < iostream >
using namespace std;
int main()
{
int count = 0 ;
while ( ++ count)
{
int p,e,i,d;
cin >> p >> e >> i >> d;
if (p ==- 1 )
break ;
int j = d + 1 ;
for (;j < 21252 ;j ++ )
if ((j - p) % 23 == 0 ) break ;
for (;j < 21252 ;j += 23 )
if ((j - e) % 28 == 0 ) break ;
for (;j < 21252 ;j = j + 23 * 28 )
if ((j - i) % 33 == 0 ) break ;
cout << " Case " << count << " : the next triple peak occurs in " << j - d << " days. " << endl;
}
return 0 ;
}
总结:做题要认真,做一道懂一道最好,表眼高手低.。
By Ns517
Time 09.02.03