HDU 3104 Combination Lock [Ad Hoc]

Description

给一个钟,N个刻度,再给T1,T2,T3个刻度,执行以下操作
转2圈,再顺时针转到T1
再转1圈,逆时针转到T2
再顺时针转到T3
问最多要转多少步?
然后呵呵,这个只能钟转刻度不能转,所以说上面的都是逗你的,顺时针 == 逆时针,逆时针 == 顺时针

Algorithm

转到T1以后,后面的都是定的,所以只需要决定第一步最大步数就好了
想都不要想就是T1旁边的那个,这样的话一个要转 3 * n - 1,肯定是最大
下面用样例来说明
80 20 40 50
从19开始,先转2圈 160
再转到20,前面已经说了,说是顺时针,其实是逆时针 所以 160 + 80 - 1 = 239
T1 -> T2, 再转一圈,再到T2 239 + 80 + 20 = 339
T2 -> T3 339 + 80 - 10 = 409
就这样

Code

#include <iostream>
using namespace std;
int main()
{
  int n, t1, t2, t3;
  for (;;)
  {
    cin >> n >> t1 >> t2 >> t3;
    if (n == 0 && t1 == 0 && t2 == 0 && t3 == 0) break;
    int ans = 4 * n - 1;
    if (t2 > t1) ans += t2 - t1; else ans += n - (t1 - t2);
    if (t3 > t2) ans += n - (t3 - t2); else ans += (t2 - t3);
    cout << ans << endl;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值