2218 - 老旧的钟表

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

小明家有一个非常旧的钟表,表盘上的数字已经看不清了,但是时针依然运转完好,于是小明想根据时针的角度来判断现在的时间,请你编程来帮助他。
当时针指向正右方,也就是3点钟的时候,我们规定此时为0度。因此,当时针转过80度的时候,此时的时间在0点钟与1点钟之间。
注意我们规定没有12点钟,要用0点钟来表示。

题目输入

输入包含多组测试数据。
每组输入一个整数a(0<=a<360),表示时针转过的角度。当a=-1时,输入结束。

题目输出

对于每组输入,输出现在的时间,格式有两种,如下:
(1)Exactly x o'clock
(2)Between x o'clock and y o'clock
注意,当输出为第二种格式时,x点钟应该是y点钟之前一个小时的那个整点,所以你不能输出例如“Between 3 o'clock and 2 o'clock”这种结果。

输入/输出样例

输入格式

90
245
-1

输出格式

Exactly 0 o'clock
Between 6 o'clock and 7 o'clock

C语言解答

#include<stdio.h>

int main()
{
	int m,n;
	int a;
	while(scanf("%d",&m)!=EOF,m!=-1)
	{
		n=m/30;
		if(m%30==0)
		{
			if(n<=3)
				a=3-n;
			else
				a=3-n+12;
			printf("Exactly %d o'clock\n",a);
		}
		else
		{
			if(m<90||m>120)
			{
				if(m<90)
					a=3-n;
				else
					a=3-n+12;
				printf("Between %d o'clock and %d o'clock\n",a-1,a);
			}
			else
			{
				printf("Between 11 o'clock and 0 o'clock\n");
			}
		}
	}
	return 0;
}

C++解答

#include <stdio.h>

int main() {
	int a, x, y;
	while (scanf("%d", &a) != EOF, a != -1) {
		if (a % 360 % 30 == 0 && a % 360 / 30 <= 3) {
			x = 3 - a % 360 / 30;
			printf("Exactly %d o'clock\n", x);
		} else if (a % 360 % 30 == 0 && a % 360 / 30 > 3) {
			x = 15 - a % 360 / 30;
			printf("Exactly %d o'clock\n", x);
		} else if (a % 360 % 30 != 0 && a % 360 / 30 <= 3) {
			x = 3 - a % 360 / 30;
			if (x > 0)
				y = x - 1;
			else
				y = 11;
			printf("Between %d o'clock and %d o'clock\n", y, x);
		} else if (a % 360 % 30 != 0 && a % 360 / 30 > 3) {
			x = 15 - a % 360 / 30;
			y = x - 1;
			printf("Between %d o'clock and %d o'clock\n", y, x);
		}
	}
	return 0;
}