`
linx_bupt
  • 浏览: 15090 次
  • 来自: 北京
社区版块
存档分类
最新评论

POJ_1006_Biorhythms分析

 
阅读更多

POJ_1006_Biorhythms分析

每个人都有自己体力、感情和智力上的大姨妈。周期分别为23天,28天和33天。如果我在第10天来了体力大姨妈,在第11天来了感情大姨妈,在第12天来了智力大姨妈,请问,我下一次三个大姨妈一起来(爽歪歪了吧,没准还四个大姨妈一起来 )是在哪一天?然后这道题目还要求从给定的如期开始算还需要多少天,其实不影响。

其实这是一道解方程的题。

已知体力、感情、智力大姨妈来的时候分别在第a,b,c天,他们各自经过了Ta,Tb,Tc个周期,最后一起来的时候是第S天,则:

S = a + Ta * 23 = b + Tb * 28 = c + Tc * 33

求满足条件最小的S。

这题的最优解网上可以搜出一大堆,但我最直观的解法是:

设定Tc为变量,Ta和Tb为因变量。这样求得最小的S需要最多的迭代次数为23 * 28次,计算量可以接受。

这道题有一个小小的可以优化的地方:如果a = b = c,那么方程为齐次的,最小的S为三个周期的最小公倍数,可以减小计算量。

另外,如果求得的S为0,那么下一次来三体合一的大姨妈就是今天,合理吗?所以这个就要计算再下一次三体合一的时间啦,没注意这一点,很可能就被POJ判决为Wrong Answer了

代码没什么难点,就不给出了

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics