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);
	 }
  } 
}


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

posted @ 2013-08-13 15:29  InkGenius  阅读(406)  评论(0编辑  收藏  举报