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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值