zoukankan      html  css  js  c++  java
  • HDU 6112 今夕何夕 蔡勒公式

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6112题意:中文题目

    分析:关键点在与如何计算一个日期是星期几,这个可以通过蔡勒公式来计算。基姆拉尔森计算公式可以通过给定的year month day 计算出给定日期是星期几,注意:在公式中有个与其他公式不同的地方:
    把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算,最后这道题要考虑闰年的情况,2月29号只可能在闰年中出现。基姆拉尔森计算公式:  W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 在公式中d表示日期中的日数,m表示月份数,y表示年数。

    #include <bits/stdc++.h>
    using namespace std;
    int cal(int y, int m, int d)
    {
        if(m==1||m==2){
            m+=12;
            y--;
        }
        return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    }
    bool leap(int y){
        if(y%400==0||(y%4==0&&y%100!=0)) return true;
        else return false;
    }
    int main()
    {
        int T; scanf("%d", &T);
        while(T--){
            int y,m,d;
            scanf("%d-%d-%d",&y,&m,&d);
            int w=cal(y,m,d);
            int flag=0;
            if(m==2&&d==29){
                flag=1;
            }
            if(flag){
                for(int i=y+1;; i++){
                    if(cal(i,m,d)==w&&leap(i)){
                        printf("%d
    ", i);
                        break;
                    }
                }
            }
            else{
                for(int i=y+1;;i++){
                    if(cal(i,m,d)==w){
                        printf("%d
    ",i);
                        break;
                    }
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    VSCode搭建golang环境
    Jmeter之连接数据库
    Jmeter之『如果(If)控制器』
    mysql时间SQL
    正则表达式查找“不包含XXX字符串”
    Jmeter5.3源码编译
    Log4j源码分析
    12 个 JS 技巧
    高效学习很重要
    IntelliJ IDEA自动导入包去除星号(import xxx.*)
  • 原文地址:https://www.cnblogs.com/spfa/p/7375354.html
Copyright © 2011-2022 走看看