真题解析│蓝桥杯省赛真题“送分题”之星期一
2018年蓝桥杯软件类省赛(软件类)C/C++大学A组第2题“星期一”,一道结果填空题,又是道送分题。
*本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供。
题目描述
2018省赛A组第2题“星期一”,题目链接:
http://oj.ecustacm.cn/problem.php?id=1360
整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?
题解
excel
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;
}
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);
}
}
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)
然而,罗老师刚翻了Python教材,发现前面都做了无用功。直接硬上:
from datetime import *
dt1 = datetime(1901,1,1)
dt2 = datetime(2000,12,31)
td = dt2- dt1
print(td.days//7)

添加 家长论坛微信
全部 0条评论