国庆节是星期几(题目)
1949~2012 年间,一共有___个国庆节是星期日。
思路
题目很短,意思也很明确(~ ̄▽ ̄)~
刚开始时候懵了下 什么时候星期几我哪知道….
忽然想到今天(2017年12月6日)是星期三
那就以今天的日子为线索往回找
就是一天一天的减回去
比如
2017-12-6 星期三
减去一天后
2017-12-5 星期二
再减去一天
2017-12-4 星期一
以此类推
直到1948年为止,在减天数的同时发现符合条件的就count++
这么做比较暴力,如果有其他好的做法,麻烦评论区留下言,感激不尽ヽ( ̄▽ ̄)ノ
其他条件(默认)
1.闰年的计算方法
两种 |
---|
年份能被4整除且不能被100整除 |
年份能被400整除 |
2.每一个月份各有多少天
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|
31 | 28或29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
完整代码
#include<iostream>
using namespace std;
int main()
{
int y=2017; //2017年
int m=12; //12月
int d=6; //6日
int date=3; //星期三
int count=0;
while(y>1949){
if(y>=1949&&y<=2012&&m==10&&d==1&&date==7) //符合条件的具体日期
{
cout<<y<<"-"<<m<<"-"<<d<<endl;
count++;
}
d--;
date--;
if(date==0)
{
date=7; //重置为星期天
}
if(d==0)
{
if(m==5||m==7||m==10||m==12){
d=30;
m--;
continue;
}
if(m==1||m==2||m==4||m==6||m==8||m==9||m==11){
d=31;
m--;
if(m==0)
{
m=12;
y--;
}
continue;
}
if(m==3){
if(y%4==0&&y%100!=0||y%400==0) //闰年的计算
{
d=29;
m--;
}else{
d=28;
m--;
}
}
}
}
cout<<"一共有"<<count<<"个"<<endl;
return 0;
}
最终结果