文章
34
粉丝
179
获赞
13
访问
199.0k
这题以前也算碰过,不过第二次做的话思路相对清楚了一些,花了也有很久的考试,考试的时候可能就很难写出来了。
思路汇总,这题给定了一个日期那就是1965.1.1是周五,总的就是要算出距离这一天过了多少天,然后%7,最后加上当天的周五就可以了。这块处理的话自己是加上5再%7,但是要注意周天%7是0,所以要特殊处理下。
一个比较麻烦地方就是距离很多年,中间会有闰年,非闰年交替,不太好处理,也应该就是这题的难点。
我采用的办法是预处理把所有的年份先判断是否为闰年,然后先把整年的算了,假如是到2000年8月30日,那我就吧到1999年之间的整年都算了,最后2000年再单独处理。对于这个单独出的年份我的方法如下,还是用到了之前的预处理,判断是否为闰年,把到7月的按整月处理,最后day单独加上去。
自己本题也是先单独写了1965年的,测试了下,再扩大到所以的年份。
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年
int c[10000]={0};
int lunnian(int year){ //判断是否为闰年
if((year %4==0 && year%100!=0) || year%400==0)
return 1;
else
return 0;
}
int main(){
int year,month,day;
for(int i=1965;i<=9999;i++){ //预处理,提前判断所有可能的年份是否为闰年
if(lunnian(i)==1)
c[i]=1;
}
while(scanf("%d %d %d",&year,&month,&day)!=EOF){
...
登录后发布评论
暂无评论,来抢沙发