zoukankan      html  css  js  c++  java
  • 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
    ",++cas,ans);        
    41     }
    42     return 0;
    43 } 
  • 相关阅读:
    jsp中添加弹窗口并且实现向后台双向传递数据
    hql中or的用法(代替union)
    hql中in的用法
    spring中的定时任务调度用例
    JS如何将UTC格式时间转本地格式
    HttpSession与Hibernate中Session的区别
    adaptive hash index
    InnoDB Double write
    int(M)与int
    MySQL库目录下db.opt文件的作用
  • 原文地址:https://www.cnblogs.com/fu3638/p/7450078.html
Copyright © 2011-2022 走看看