• Poj 2304 Combination Lock(模拟顺、逆时钟开组合锁)


    一、题目大意

            模拟一个开组合的密码锁过程。就像电影你开保险箱一样,左转几圈右转几圈的就搞定了。这个牌子的锁呢,也有它独特的转法。这个锁呢,有一个转盘,刻度为0~39。在正北方向上有一个刻度指针。它的密码组合有三个数,开锁的套路为:先把刻度盘顺时针转两圈,然后再顺时针转到第一个数,再把刻度盘逆时针转一圈,再逆时针转到第二个数,最后再顺时针转到第三个数。这里的转到那个数是指将刻度盘上的数转到指针处。起始位置和组合密码有标准输入给出。求圆盘转过的总度数(顺时针加上逆时针)。注意刻度盘上还有一个凸起的圆盘,这个是不能转的。

    二、题解

           这个过程有一个不变的度数就是转的3圈数,1080度。然后就是顺时针和逆时针两种情况下,一个数转到另一个数要转的度数。顺时针情况下,从起始到结果的计算公式为:

    result +=end > start  ? (40+start-end) * 9 : (start-end) * 9;,二逆时针则是:result+=end > start ? (end-start) * 9 : (40+end-start) * 9;

    三、java代码

    import java.util.Scanner;
    public class Main{
    	
      public static void main(String args[]){
    	 Scanner sc=new Scanner(System.in);
    	 int ini,one,two,three;
    	 while(true){
    		 int result=1080;
    		 ini=sc.nextInt();
    		 one=sc.nextInt();
    		 two=sc.nextInt();
    		 three=sc.nextInt();
    		 if(ini+one+two+three==0)
    			 break;
    		 result+=one > ini ?(40+ini-one) * 9:(ini-one) * 9;
    		 result+=two > one ?(two-one) * 9:(40+two-one) * 9;
    		 result+=three > two ?(40+two-three) * 9:(two-three) * 9;
    		 System.out.println(result);
    	 }
      } 
    }
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    [liu yanling]常用的测试工具
    [liu yanling]软件测试的过程
    [liu yanling]测试方法
    [Buffalo] 一些SQL函数
    [Stephen]C#中调用C++动态链接库
    [Jacky] 解决Ext.Net GridPanel 选择的行数据刷新后不能获取最新值
    [Tommas] dateadd() 函数用法
    [Tommas] UNION 和 UNION ALL 的区别
    文件I/O编程
    分房问题
  • 原文地址:https://www.cnblogs.com/AndyDai/p/4734125.html
Copyright © 2020-2023  润新知