HDU 2180 時鍾 題解


Problem Description
從a點b分到s點t分時針和分針重合多少次? 
 

Input
有多組數據,每組1行4個數 a,b,s,t. 1<=a,s <=12, 0<=b,t<60. 0 0 0 0結束.
 

Output
參看Sample output 
 

Sample Input
 
  
12 50 1 2 3 8 3 20 2 45 11 0 11 0 3 20 1 2 12 50 3 20 3 8 0 0 0 0
 

Sample Output
 
  
0 1 8 4 11 10

相當於智力題了。

不做習慣還真不太容易做出來,看來考智力的題目都扯淡,做過,習慣這種思維才是王道。

關鍵:

思考分針,看看分針可以在這個時間段內循環多少圈,每循環一圈就是相遇一次。

不過要仔細計算,否則會答案錯誤的,就差那么一圈地WA,氣死人。

#include <cstdio>

class ClockMeets_1
{
	int Vm, Vh;
	int a, b, s, t;

	int counting()
	{
		int v = Vm - Vh;
		int s1 = (a*60 + b) * v;
		int s2 = (s*60 + t) * v;
		int times = s2 / 720 - s1 / 720;//可以走多少圈,和已經走多少圈相減

		if (s1 == 0) times++;//00:00出發的時候,加上出發時相遇
		return times;
	}
public:
	ClockMeets_1() : Vh(1), Vm(12)
	{
		
		while (scanf("%d %d %d %d", &a, &b, &s, &t) && (a || b || s || t))
		{
			if(a>s || (a==s && b>=t)) s += 12;
			printf("%d\n", counting());
		}
	}
};



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com