问题 C: 沈老师的最后一关

编程入门 行业动态 更新时间:2024-10-11 13:20:45

问题 C: 沈<a href=https://www.elefans.com/category/jswz/34/1768649.html style=老师的最后一关"/>

问题 C: 沈老师的最后一关

题目描述:

安杰好不容易搬完了弹药,没想到沈老师还不打算放过他。除非,他能回答沈老师一个问题。这个问题很简单:已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几? 注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。 安杰非常愚钝,你能帮助他吗?

输入:

输入只有一行
YYYY MM DD 
1599 <= YYYY <= 2999
1 <= MM <= 12
1 <= DD <= 31
且确保测试样例中YYYY年MM月DD日是一个合理日期

输出:

输出只有一行
W 
1 <= W <= 7  //分别代表周一到周日

样例输入 Copy

2011 11 11

样例输出 Copy

5

分析:

1.他给的数据最小的是1599年1月1日,不知道这一天是星期几
2.推算给的日期离1599年1月1日差的日子
3.把这个日子模7
4.注意闰年差366天和2月29天28天的区分
5.最后求出来的星期和当前星期差几天他前面 补上加几天 (求出2020/2/27是星期天)距离星期4差4天 所以说要给前面的加 上4天。

6.星期天显示的是7不是0(比赛的时候忘记了)

最后的AC:

#include<bits/stdc++.h>
int Day(int aa,int bb,int cc){int tt=0;int a[]={31,28,31,30,31,30,31,31,30,31,30};for(int i=1599;i<=aa;i++){if( i%400==0||i%100!=0&&i%4==0){tt++;        	}}for(int i=0;i<bb-1;i++){cc=cc+a[i];}if((aa%400==0||aa%100!=0&&aa%4==0)&&bb<3){tt--;        	}return 365*(aa-1599)+tt+cc;
}                          
int main() {int i;int nian,yue,ri;int w=0; while(~scanf("%d%d%d",&nian,&yue,&ri)){w=Day(nian,yue,ri);w=w%7;if(w!=0){printf("%d\n",w); 	    	}else{printf("7\n");}}return 0;
}

更多推荐

问题 C: 沈老师的最后一关

本文发布于:2024-03-07 09:18:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717431.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:老师   一关

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!