HDU 6308 Time Zone ---(模拟) 2018 Multi-University Training Contest 1

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6308

题意:给你个北京时间,然后给你一个目标时区,然后让你求目标时区的时间。

题解:模拟没什么难度,但是有点常识得需要知道,北京是utf +8,然后这里面有28个时区(违反常识QAQ)。

还有就是他可能给你个小数时区。

嗯,模拟一下就过了

#include<bits/stdc++.h>
using namespace std;

int main(){
	int s,f;
	char s1[10];
	int z;
	cin >> z;
	while(z--){
		scanf("%d %d %s",&s,&f,s1);
		int len = strlen(s1);
		double start = s*60 + f;
//		cout << start << endl;
		double num = 0;;
		int pos = 0;
		for(int i = 4 ; i < len ; i ++){
			if(s1[i] == '.'){
				pos = i;
				break;
			} 
			num *= 10;
			num += s1[i] -'0';
		}
		if(pos != 0 )
			num +=(s1[pos+1]-'0' ) * 0.1;
	//	cout << num << endl;
		num *= 60;
//		cout << num << endl;
		double temp = 8*60;
//		cout << temp << endl;
		if(s1[3] == '+'){
			start += num;
			start -= temp;
		}
		else {
			start -= num;
			start -= temp;
		}
		start += 60*24;
		int aims = (int)(start/60)%24,aimf = (int)start%60;
		printf("%02d:%02d\n",aims,aimf);
	}
}

猜你喜欢

转载自blog.csdn.net/pk__pk/article/details/81185245