• HDU 3104 Combination Lock(数学题)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?

    pid=3104


    Problem Description


    A combination lock consists of a circular dial, which can be turned (clockwise or counterclockwise) and is embedded into the "fixed" part of the lock. The dial has N evenly spaced "ticks". The ticks are numbered from 0 to N - 1 , increasing in the clockwise direction. The fixed part of the lock has a "mark" which always "points to" a particular tick on the dial. Of course, the mark points to different ticks as the dial is turned.




    The lock comes with three code numbers T1 , T2 , T3 . These are non-negative integers and each of them is less than N . No two of the three are the same.

    The lock is opened in three stages of operations:

    1. Turn the dial clockwise exactly two full revolutions, and continue to turn it clockwise until the mark points to tick T1 .
    2. Turn the dial one full revolution counterclockwise and continue to turn it counterclockwise until the mark points to tick T2 .
    3. Turn the dial clockwise until the mark points to tick T3 . The lock should now open.

    You must find the maximum possible number of ticks the dial must be turned in order to open the lock. The number of ticks turned is defined to be the sum of the ticks turned in the three stages outlined above, and is always positive regardless of direction.
     
    Input
    The input file consists of a number of test cases, one test case per line. Each line of the input file contains four integers: N , T1 , T2 , T3 , in this order, separated by blank spaces. The integer N is a multiple of 5, 25<=N<=100 . The numbers T1 , T2 and T3 satisfy the constraints stated under the description above. The input will be terminated by a line with N = T1 = T2 = T3 = 0 .
     
    Output
    For each test case, print the maximum possible number of ticks the dial must be turned in order to open the lock. Print each on its own line.
     
    Sample Input
    80 20 40 50 80 10 79 12 0 0 0 0
     
    Sample Output
    409 455
     
    Source


    题意:

    转动表盘:

    1、顺时针转动两圈后再转到T1。

    2、逆时针转动一圈后再转到T2;

    3、顺时针转动到T3。

    问终于转了多少格;

    PS:

    顺时针转动表盘。相当于逆时针转动指针。

    代码例如以下:

    #include<cstdio>
    int main()
    {
        int n;
        int a1,a2,a3;
        int ans;
        while(~scanf("%d%d%d%d",&n,&a1,&a2,&a3))
        {
            if(n==0 && a1==0 && a2==0 && a3==0)
                break;
            ans = 4*n-1;
            if(a2>a1)
            {
                ans+=a2-a1;
            }
            else
            {
                ans+=n+a2-a1;
            }
            if(a3<a2)
            {
                ans+=a2-a3;
            }
            else
                ans+=n+a2-a3;
            printf("%d
    ",ans);
        }
        return 0;
    }
    


  • 相关阅读:
    在centos7下 布隆过滤器2种安装方式
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    redis lua --eval报错1: Lua redis() command arguments must be strings or integers
    redis+lua脚本 分布式锁初步学习
    redis中通用命令(key)和补充
    redis基本数据类型有序集合(zset)学习笔记
    redis基本数据结构集合(set)学习笔记
    大道至简读后感
    第一周
    《大道至简》读后感
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7093726.html
Copyright © 2020-2023  润新知