星期一
题目描述
整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?
(不要告诉我你不知道今天是星期几)
输出
输出一个整数表示答案
思路
非常简单,直接计算从1901年1月1日至2000年12月31日之间一共有多少天,然后除以7,就是了。
代码:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int ans=0,sum=0;
for(int i=1901;i<=2000;i++){
if((i % 4==0 && i % 100 != 0) || (i % 400 ==0)){
sum+=366;
}
else {
sum+=365;
}
}
ans=sum/7;
cout<<ans;
return 0;
}
答案5217
在网上找的某位大佬的代码,一天天判断,个人觉得比较复杂。
#include <iostream>
#include <cmath>
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 days(int year,int month)
{
if(year%400==0||year%4==0&&year%100!=0)
return b[month];
else
return a[month];
}
int main()
{
int year=2000,month=12,day = 31;
int i=1,ans=0;
while(!(year==1901&&month==1&&day==1))
{
day--;
i++;
if(i==8)
{
i=1;
ans++;
}
if(day==0)
{
day=days(year,month);
month--;
if(month==0)
{
month=12;
year--;
}
}
}
cout<<ans<<endl;
return 0;
}