B - The World HDU - 6556

Problem - 6556

题目大意:

给一个12小时制的当地时间,求在目标位置的时间。

Beijing:+8时区,Washington:-5时区,London:0时区,Mocow:+3时区

00:00=12:00AM,12:00=12:00 PM

思路:

先将12小时制的时间换成24小时制的,然后算出两个地区间的时间差将它加到已知时间上就能求得最终时间,如果时间大于24,就是明天,< 0就是昨天,如果<12,就是AM,>=12是PM。

#include<bits/stdc++.h>
using namespace std;
int tim[5] = { 0,8,-5,0,3 };//记录时区
int getini(string loc)
{
	int city;
	if (loc[0] == 'B')
	{
		city = 1;
	}
	if (loc[0] == 'W')
	{
		city = 2;
	}
	if (loc[0] == 'L')
	{
		city = 3;
	}
	if (loc[0] == 'M')
	{
		city = 4;
	}
	return city;
}//获取对应时区
int main()
{
	int t;
	cin >> t;
	for(int i=1;i<=t;i++)
	{
		int hour;
		string time, per, loc, tar;
		scanf("%d", &hour);
		cin >>time >> per >> loc >> tar;
		if (hour == 12)
			hour = 0;//12小时制中的12是24小时制里的0
		if (per == "PM")
		{
			hour += 12;							
		}
		int h = -tim[getini(loc)] + tim[getini(tar)];
		hour += h;
		string day = "Today";
		if (h >= 0)
		{
			if (hour >= 24)
			{
				day = "Tomorrow";
				hour -= 24;
			}
		}
		else
		{
			if (hour < 0)
			{
				day = "Yesterday";
				hour += 24;
			}
		}
		if (hour < 12)
		{
			per = "AM";
		}
		else
		{
			per = "PM";
		}
		if (hour == 0)
		{
			hour = 12;
		}//24小时制里的0是12小时制里的12
		if (hour > 12)
		{
			hour -= 12;
		}
		cout << "Case " << i << ": " << day << " " << hour << time << " " << per << endl;
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timidcatt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值