当前位置: 首页 > news >正文

LightOJ 1414 February 29(闰年统计+容斥原理)

题目链接:https://vjudge.net/contest/28079#problem/R

题目大意:给你分别给你两个日期(第二个日期大于等于第一个日期),闰年的2月29日称为闰日,让你求两个日期之间的闰日数量。

解题思路:①先求闰年数量,可以根据容斥原理,得到ans=(year2/4-year1/4)-(year2/100-year1/100)+(year2/400-year1/400)

     ②根据year1和year2的月份特判该年是否含闰日,注意一下上面的算式中ans包含了year2而没有包含year1所以判断时也有所不同,如果year2没有闰日ans-1,如果year1有闰日ans+1。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 char s[20][20]={"","January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"};
 6 char tmp[20];
 7 
 8 int jg_month(void){
 9     for(int i=1;i<=12;i++){
10         if(!strcmp(tmp,s[i])){
11             return i;
12         }
13     }
14 }
15 
16 bool is_leap(int year){
17     if(year%4==0&&year%100!=0||year%400==0)
18         return true;
19     else
20         return false;
21 }
22 
23 int main(){
24     int T;
25     scanf("%d",&T);
26     int cas=0;
27     while(T--){
28         int day1,year1,month1,day2,year2,month2;
29         scanf("%s%d,%d",tmp,&day1,&year1);        
30         month1=jg_month();
31         scanf("%s%d,%d",tmp,&day2,&year2);
32         month2=jg_month();
33         //根据容斥原理 
34         int ans=(year2/4-year1/4)-(year2/100-year1/100)+(year2/400-year1/400);
35         //根据year1,year2的月份进行特判 
36         if(month1<=2&&is_leap(year1))
37             ans++; 
38         if(is_leap(year2)&&!(month2>=3||month2==2&&day2==29))
39             ans--;
40         printf("Case %d: %d\n",++cas,ans);        
41     }
42     return 0;
43 } 

 

转载于:https://www.cnblogs.com/fu3638/p/7450078.html

相关文章:

  • C++ 日志类库 log4cplus
  • Spark Mllib里如何将trainDara训练数据的分类特征字段转换为数值字段(图文详解)...
  • 给Eclipse安装eUML2插件以及可能出现的依赖错误解决方案
  • junit import org.junit.Test 报错
  • SQL Server2005与SQLServer2008并存时, 怎样连接到2008
  • 微信小程序开发之带搜索记录的搜索框
  • 怎样启用sa用户登录
  • (接口自动化)Python3操作MySQL数据库
  • 自动在多个DB上执行同一条sql语句 ( 存储过程版 )
  • 判断是否是子串
  • 程序员编程艺术第十一章:最长公共子序列(LCS)问题
  • Python之时间表示
  • iOS中UIWebview中网页宽度自适应的问题
  • 重启开源,分享无限--微软面试187题精选
  • 推荐给非互联网主体的用户
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 2017年终总结、随想
  • CSS3 变换
  • ESLint简单操作
  • Go 语言编译器的 //go: 详解
  • JDK 6和JDK 7中的substring()方法
  • Mithril.js 入门介绍
  • mockjs让前端开发独立于后端
  • PAT A1120
  • SpingCloudBus整合RabbitMQ
  • Tornado学习笔记(1)
  • V4L2视频输入框架概述
  • v-if和v-for连用出现的问题
  • 给新手的新浪微博 SDK 集成教程【一】
  • 解决iview多表头动态更改列元素发生的错误
  • 如何优雅地使用 Sublime Text
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 用element的upload组件实现多图片上传和压缩
  • kubernetes资源对象--ingress
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #13 yum、编译安装与sed命令的使用
  • #android不同版本废弃api,新api。
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (0)Nginx 功能特性
  • (1)Android开发优化---------UI优化
  • (1)SpringCloud 整合Python
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (分布式缓存)Redis哨兵
  • (六)Hibernate的二级缓存
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • .naturalWidth 和naturalHeight属性,
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net 微服务 服务保护 自动重试 Polly
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [CC-FNCS]Chef and Churu
  • [CISCN2019 华东南赛区]Web11
  • [Gamma]阶段测试报告
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)