HDU 3104 Combination Lock [Ad Hoc]

来源:互联网 发布:兰州拉面 知乎 编辑:程序博客网 时间:2024/06/17 16:51

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
原创粉丝点击