倪文迪陪你学蓝桥杯2021寒假每日一题:1.14日(2018省赛A组第2题)
2021年寒假每日一题,2017~2019年的省赛真题。
本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供。
后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: https://blog.csdn.net/weixin_43914593/category_10721247.html
每一题提供C++、Java、Python三种语言的代码。
@
2018省赛A组第2题,题目链接:
星期一 http://oj.ecustacm.cn/problem.php?id=1360
1、题目描述
整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?
2、题解
填空题,送分题。
倪文迪说:“算一下题目要求中一共的天数,再翻翻日历看2000年12月31日是周日,根据总天数sum除以7和mod7的结果加以判断即可。”
罗老师再次无话可说。
还是说一句废话:电脑桌面右下角点击日期,可以查星期几,时间范围是100年,就是1921-2021年。
3、C++代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int sum = 0;
for(int i = 1901 ; i <= 2000 ; i++){
if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) //计算闰年
sum += 366;
else
sum += 365;
}
//cout << sum % 7 << endl; // 6 看看余数,是不是包括了周一。2000年12.31日是周日
cout << sum / 7 << endl; // 5217
return 0;
}
4、Java代码
public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i = 1901; i <=2000; i++) {
if ((i%4==0 && i%100!=0) || i%400==0)
sum += 366;
else
sum += 365;
}
System.out.println(sum/7);
}
}
5、Python代码
Python大法好!就是好!
sum = 0
for i in range(1901,2001):
if (i%4==0 and i%100!=0) or (i%400==0):
sum += 366
else:
sum += 365
#print(sum % 7) #看看余数
print(sum//7)