传智杯校赛题解 | #这次还是躲不过蓝桥杯的日期问题吗#

这次还是躲不过蓝桥杯的日期问题吗

https://ac.nowcoder.com/acm/contest/70435/B

题目描述

我们规定一个日期可以用year-month-day的格式来表示:
例如2000年1月1日可以表示为2000-1-1。
如果一个日期是星期日,并且满足month < day,那我们就称这个日期是一个"好日期"。
请计算从1949年10月01日(星期六)到2023年11月26日(包含今天)共有多少个"好日期"?

需要考虑闰年

Solution

非常坑的大模拟(也许只是小模拟?)
不适合对 CSP-2020 儒略日、2020传智杯(练习赛) 儒略历 有心理阴影的选手食用

题目没挖坑,直接模拟答案即可,注意闰年判断的两种条件和 week=7 时的更新
赛时见到有手算的选手(很震撼)

代码

#include<iostream>
using namespace std;
int m[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int check(int x){
	if(x%400==0||(x%4==0&&x%100!=0)){
		return 1;
	}else{
		return 0;
	}
}
int main(){
	int year=1949,month=10,day=1;
	int week=6;
	int ans=0;
	while(true){
		int flag=0;
		int flag1=0;
		if(check(year)){
			flag1=1;
		}
		
		if(flag1&&month==2){
			flag=m[month]+1;
		}else{
			flag=m[month];
		} 
		
		if(week==7&&month<day){
			ans++;
		}
		
		day++;
		week++;
		if(week>7){
			week=week%7;
		}
		if(day>flag){
			day=1;
			month++;
		}
		if(month>12){
			month=month%12;
			year++;
		}
		flag1=0;
		if(year==2023&&month==11&&day==27){
			break;
		}
	}
	cout<<ans;
	return 0;
}
全部评论

相关推荐

野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务