第十一届蓝桥杯省赛(7月5日)B组 试题B:纪念日 个人题解及总结

在这里插入图片描述

这题我百度看了一下很多答案都是直接拿计算器算的。

我就打了下代码(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天,日子就对了!

参考链接:

这里把参考的大佬代码的链接附上:

http://www.ngui.cc/51cto/show-12392.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值