24h購物| | PChome| 登入
2013-08-11 09:11:29| 人氣2,774| 回應0 | 上一篇 | 下一篇

[UVA] 10371 - Time Zones

推薦 0 收藏 0 轉貼0 訂閱站台

Problem E: Time Zones

Prior to the late nineteenth century, time keeping was a purely local phenomenon. Each town would set their clocks to noon when the sun reached its zenith each day. A clockmaker or town clock would be the "official" time and the citizens would set their pocket watches and clocks to the time of the town - enterprising citizens would offer their services as mobile clock setters, carrying a watch with the accurate time to adjust the clocks in customer's homes on a weekly basis. Travel between cities meant having to change one's pocket watch upon arrival.

However, once railroads began to operate and move people rapidly across great distances, time became much more critical. In the early years of the railroads, the schedules were very confusing because each stop was based on a different local time. The standardization of time was essential to efficient operation of railroads.

In 1878, Canadian Sir Sanford Fleming proposed the system of worldwide time zones that we use today. He recommended that the world be divided into twenty-four time zones, each spaced 15 degrees of longitude apart. Since the earth rotates once every 24 hours and there are 360 degrees of longitude, each hour the earth rotates one-twenty-fourth of a circle or 15� of longitude. Sir Fleming's time zones were heralded as a brilliant solution to a chaotic problem worldwide.

United States railroad companies began utilizing Fleming's standard time zones on November 18, 1883. In 1884 an International Prime Meridian Conference was held in Washington D.C. to standardize time and select the Prime Meridian. The conference selected the longitude of Greenwich, England as zero degrees longitude and established the 24 time zones based on the Prime Meridian. Although the time zones had been established, not all countries switched immediately. Though most U.S. states began to adhere to the Pacific, Mountain, Central, and Eastern time zones by 1895, Congress didn't make the use of these time zones mandatory until the Standard Time Act of 1918.

Today, many countries operate on variations of the time zones proposed by Sir Fleming. All of China (which should span five time zones) uses a single time zone - eight hours ahead of Coordinated Universal Time (known by the abbreviation UTC - based on the time zone running through Greenwich at 0� longitude). Russia adheres to its designated time zones although the entire country is on permanent Daylight Saving Time and is an hour ahead of their actual zones. Australia uses three time zones - its central time zone is a half-hour ahead of its designated time zone. Several countries in the Middle East and South Asia also utilize half-hour time zones.

Since time zones are based on segments of longitude and lines of longitude narrow at the poles, scientists working at the North and South Poles simply use UTC time. Otherwise, Antarctica would be divided into 24 very thin time zones!

Time zones have recently been given standard capital-letter abbreviations as follows:

UTC Coordinated Universal Time
GMT Greenwich Mean Time, defined as UTC
BST British Summer Time, defined as UTC+1 hour
IST Irish Summer Time, defined as UTC+1 hour
WET Western Europe Time, defined as UTC
WEST Western Europe Summer Time, defined as UTC+1 hour
CET Central Europe Time, defined as UTC+1
CEST Central Europe Summer Time, defined as UTC+2
EET Eastern Europe Time, defined as UTC+2
EEST Eastern Europe Summer Time, defined as UTC+3
MSK Moscow Time, defined as UTC+3
MSD Moscow Summer Time, defined as UTC+4
AST Atlantic Standard Time, defined as UTC-4 hours
ADT Atlantic Daylight Time, defined as UTC-3 hours
NST Newfoundland Standard Time, defined as UTC-3.5 hours
NDT Newfoundland Daylight Time, defined as UTC-2.5 hours
EST Eastern Standard Time, defined as UTC-5 hours
EDT Eastern Daylight Saving Time, defined as UTC-4 hours
CST Central Standard Time, defined as UTC-6 hours
CDT Central Daylight Saving Time, defined as UTC-5 hours
MST Mountain Standard Time, defined as UTC-7 hours
MDT Mountain Daylight Saving Time, defined as UTC-6 hours
PST Pacific Standard Time, defined as UTC-8 hours
PDT Pacific Daylight Saving Time, defined as UTC-7 hours
HST Hawaiian Standard Time, defined as UTC-10 hours
AKST Alaska Standard Time, defined as UTC-9 hours
AKDT Alaska Standard Daylight Saving Time, defined as UTC-8 hours
AEST Australian Eastern Standard Time, defined as UTC+10 hours 
AEDT Australian Eastern Daylight Time, defined as UTC+11 hours 
ACST Australian Central Standard Time, defined as UTC+9.5 hours 
ACDT Australian Central Daylight Time, defined as UTC+10.5 hours 
AWST Australian Western Standard Time, defined as UTC+8 hours 
Given the current time in one time zone, you are to compute what time it is in another time zone. The first line of input contains N, the number of test cases. For each case a line is given with a time, and 2 time zone abbreviations. Time is given in standard a.m./p.m. format with midnight denoted "midnight" and noon denoted "noon" (12:00 a.m. and 12:00 p.m. are oxymorons). Assuming the given time is the current time in the first time zone, give the current time in the second time zone.
Note: Standard am/pm notation means times are in this order: midnight, 12:01 a.m., ... 11:59 a.m. , noon, 12:01 p.m. .... 11:59 p.m, midnight, and so on

Sample Input

4
noon HST CEST 
11:29 a.m. EST GMT
6:01 p.m. CST UTC
12:40 p.m. ADT MSK

Output for Sample Input

midnight
4:29 p.m.
12:01 a.m.
6:40 p.m.


給定時區的訊息,
然後在給定在某地的時間,問同一時刻另一個地方的時間?

考驗打表的細心。

不過很明顯死了很多次,不夠細心啊。


#include <stdio.h>
#include <map>
#include <iostream>
using namespace std;
map<string, double> zone;
void build() {
zone["UTC"] = 0, zone["GMT"] = 0;
zone["BST"] = 1, zone["IST"] = 1;
zone["WET"] = 0, zone["WEST"] = 1;
zone["CET"] = 1, zone["CEST"] = 2;
zone["EET"] = 2, zone["EEST"] = 3;
zone["MSK"] = 3, zone["MSD"] = 4;
zone["AST"] = -4, zone["ADT"] = -3;
zone["NST"] = -3.5, zone["NDT"] = -2.5;
zone["EST"] = -5, zone["EDT"] = -4;
zone["CST"] = -6, zone["CDT"] = -5;
zone["MST"] = -7, zone["MDT"] = -6;
zone["PST"] = -8, zone["PDT"] = -7;
zone["HST"] = -10;
zone["AKST"] = -9, zone["AKDT"] = -8;
zone["AEST"] = 10, zone["AEDT"] = 11;
zone["ACST"] = 9.5, zone["ACDT"] = 10.5;
zone["AWST"] = 8;
}
int main() {
build();
int testcase;
char s[60], st[60], ed[60];
scanf("%d", &testcase);
while(testcase--) {
scanf("%s", s);
int hh = 0, mm = 0;
if(s[0] == 'm' || s[0] == 'n') {
if(s[0] == 'm') hh = 0;
else hh = 12;
} else {
sscanf(s, "%d:%d", &hh, &mm);
scanf("%s", s);
hh %= 12;
if(s[0] == 'p') hh += 12;
}
mm = hh*60 + mm;
scanf("%s %s", st, ed);
mm = mm + ((zone[ed]-zone[st])*60+24*60);
hh = (mm/60)%24, mm = mm%60;
if(mm || hh%12)
printf("%d:%02d %c.m.\n", hh%12 ? hh%12 : 12, mm, hh >= 12 ? 'p' : 'a');
else
puts(hh ? "noon" : "midnight");
}
return 0;
}
/*
10
12:06 p.m. HST AEST
*/
 

台長: Morris
人氣(2,774) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: UVA |
此分類下一篇:[UVA][dp] 10599 - Robots(II)
此分類上一篇:[UVA][模擬] 10114 - Loansome Car Buyer

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文