⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1963.cpp

📁 哈尔滨工业大学ACM 竞赛网上在线试题集锦的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1963 on 2005-12-21 at 17:43:40 */ 
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;

const char zone[][8] = { "UTC", "GMT", "BST", "IST", "WET", "WEST", "CET", "CEST",
	"EET", "EEST", "MSK", "MSD", "AST", "ADT", "NST", "NDT", "EST", "EDT", "CST", 
	"CDT", "MST", "MDT", "PST", "PDT", "HST", "AKST", "AKDT", "AEST", "AEDT", "ACST",
	"ACDT", "AWST", "" };
const int rd[] = { 0, 0, 2, 2, 0, 2, 2, 4, 4, 6, 6, 8, -8, -6, -7, -5, -10, -8, -12,
	-10, -14, -12, -16, -14, -20, -18, -16, 20, 22, 19, 21, 16 };

struct cmp {
	bool operator ()(const char* s1, const char* s2) const {
		return strcmp(s1, s2) < 0;
	}
};

int main()
{
	map<const char*, int, cmp> time;
	int i, t, T;
	char cur[64], za[8], zb[8];

	for(i = 0; zone[i][0] != 0; i++) {
		time[zone[i]] = rd[i];
	}
	scanf("%d", &T);
	for(t = 0; t < T; t++) {
		int hour, minute;
		bool certain = true;
		scanf("%s", cur);
		if(!strcmp(cur, "noon")) hour = 12, minute = 0;
		else if(!strcmp(cur, "midnight")) hour = 0, minute = 0;
		else sscanf(cur, "%d:%d", &hour, &minute), certain = false;
		if(!certain) {
			scanf("%s", cur);
			if(!strcmp(cur, "p.m.") && hour != 12) hour += 12;
			if(!strcmp(cur, "a.m.") && hour == 12) hour = 0;
		}
		scanf("%s %s", za, zb);
		int rdt = time.find(zb)->second - time.find(za)->second + 48;
		hour += rdt / 2, minute += (rdt % 2) * 30;
		while(minute >= 60) hour++, minute -= 60;
		hour %= 24;
		if(hour == 0) {
			if(minute == 0) printf("midnight\n");
			else printf("12:%02d a.m.\n", minute);
		} else if(hour == 12) {
			if(minute == 0) printf("noon\n");
			else printf("12:%02d p.m.\n", minute);
		} else if(hour > 12) printf("%d:%02d p.m.\n", hour-12, minute);
		else printf("%d:%02d a.m.\n", hour, minute);
	}
	
	return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -