薛定谔的时间旅行(年份处理模板秒杀)

题目描述
在一个盒子里有一只猫。之后盒子内有 50% 的概率释放出毒气杀死这只猫,同时有 50% 的概率猫将活下来。
盒子里必将发生这两个结果之一,而外部观测者只有打开盒子才能知道里面的结果。
当盒子处于关闭状态,整个系统则一直保持不确定性的波态,即猫生死叠加。
为了完成这个实验,我们必须精准的控制释放毒气的概率,所以我们通过放射性物质的衰变来控制毒气释放。
然而,放射性物质的衰变可能是个很漫长的过程,薛定谔显然没有足够的时间去等待,所以他打算直接到未来去了解实验的结果。
通过时间跳跃,可以让薛定谔来到接下来最近的某一年的同一个日子,这个日子的星期数和今天一样。
比如今天是 8 月 16 日,星期三。下一个也是星期三的 8 月 16 日发生在 2023 年。
现在是日期是 yyyy-mm-dd,我们希望你求出薛定谔会跳跃到那一年。
输入
第一行为 T,表示输入数据组数。
每组数据包含一个日期,格式为 YYYY-MM-DD。
1 ≤ T ≤ 10000
YYYY ≥ 2017
日期一定是个合法的日期
输出
对每组数据输出答案年份,题目保证答案不会超过四位数。
样例输入
1
2017-08-16
样例输出
2023

#include<bits/stdc++.h>
using namespace std;
int M[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
    int y , m , d , ans = 0;
    int T;
    cin>>T;
    while(T--){
	scanf("%d-%d-%d",&y,&m,&d);
	int w=1;//设今天星期一 
	int t1=m;
	int t2=d;
	int t3=w; 	
	while(1){  
		if(y%400==0 || (y%4==0&&y%100!=0)){
			M[2] = 29;
		}
		else{
		    M[2] = 28; //这个必须加,因为M为全局变量 
		}
		d++;
		w = (w + 1) % 7;//w为0为星期天
		if(d > M[m]){
			d = 1;
			m ++; 
		} 
		if(m>12){
			m = 1;
			y ++;
		} 
		if(t1==m&&t2==d&&t3==w){ 
			ans = y;
			break;
		} 
	}
	cout << ans << endl;
}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小王子y

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

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

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

打赏作者

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

抵扣说明:

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

余额充值