这题我百度看了一下很多答案都是直接拿计算器算的。
我就打了下代码(C++)。我写的就很直白一天天算的。1921和2020是单独拿出来算的。
#include<bits/stdc++.h>
using namespace std;
bool runYears(int n){
if((n%4==0)&&(n%100!=0)|| (n%400==0)){
return true;
}else{
return false;
}
}
int main(){
int days = 0;
int sum = 0;
bool flag;
int time = 0;
// 计算1922-2019年的天数总和
for(int i = 1922; i < 2020; i++){
flag = runYears(i);
if(flag){
days = 366;
}else{
days = 365;
}
sum += days;
days = 0;
}
// 计算1921年7月24日到1921年12月31日的天数
days = (31-24+1) + 3*31 + 2*30;
sum += days;
days = 0;
// 计算2020年1月1日到2020年6月30日的天数
days = 2*30+1*29+3*31;
sum += days;
// 将合计天数+1转化为分钟并输出(加的1是1921.7.23的12小时跟2020.7.1的12小时合了一天)
time = (sum+1)*24*60;
cout << time << endl;
return 0;
}
输出结果:52038720
打完之后发现还是有人用代码算的,看了下他的简单点所以在这里也附上他的方式(python):
def fun(year):
if (year%4==0 and year%100!=0) or year%400==0:
return 366
return 365
day = 0
for i in range(1922,2021):
day += fun(i)
# 1921.7.23 到 2020.7.23的天数
# 再减22天
day = day - 22
min = day * 24 * 60
print(min)
总结:
对比了下他的方法相比我的好在不用把2020和1921年那几个月的天数单独算,这个题目是不需要2020年7月1日后的日子,需要1921年7月23日后的日子,他直接把1921.7.23后面应该有的天数算到2020年里了,这样直接计算2020年全部的天数,再减去7.1到7.23多的那22天,日子就对了!
参考链接:
这里把参考的大佬代码的链接附上: