zoukankan      html  css  js  c++  java
  • 模板

    原来历史上1582年10月4日的下一天是1582年10月15日;

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    struct Date {
        int y, m, d;
    
        Date(int y=0,int m=0,int d=0):y(y),m(m),d(d){}
    
        void nextDate() {
            ++d;
            carryDay();
        }
        void carryDay() {
            if(y==1582&&m==10&&d==5){
                d=15;
                return;
            }
    
            if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
                if(d == 32) {
                    d = 1;
                    ++m;
                    carryMonth();
                }
            } else if(m != 2) {
                if(d == 31) {
                    d = 1;
                    ++m;
                }
            } else {
                if(isLeapYear()) {
                    if(d == 30) {
                        d = 1;
                        ++m;
                    }
                }
                else{
                    if(d == 29) {
                        d = 1;
                        ++m;
                    }
                }
            }
        }
    
        void carryMonth(){
            if(m==13){
                m=1;
                ++y;
            }
        }
    
        bool isLeapYear(){
            return (y%4==0&&y%100!=0||y%400==0);
        }
    
        ll toLongLong(){
            return (10000ll*y+100ll*m+d);
        }
    
        int Zeller(){
            //0 是 星期日
            if(y>1582||(y==1582&&(m>10||(m==10&&d>4))))
               return Zeller1();
            else
                return Zeller2();
        }
    
        int Zeller1(){
            int _c,_y=y,_m=m,_d=d;
            if(_m<=2)
                _m+=12,_y-=1;
            _c=_y/100;
            _y%=100;
            return ((_y+_y/4+_c/4-2*_c+13*(_m+1)/5+_d-1)%7+7)%7;
        }
        int Zeller2(){
            int _c,_y=y,_m=m,_d=d;
            if(_m<=2)
                _m+=12,_y-=1;
            _c=_y/100;
            _y%=100;
            return ((_y+_y/4+_c/4-2*_c+13*(_m+1)/5+_d+2)%7+7)%7;
        }
    }date;
    
    int main() {
    #ifdef Yinku
        freopen("Yinku.in", "r", stdin);
    #endif // Yinku
        date=Date(1500,1,1);
        int cnt=0;
        for(int i=1;i<=50000;++i){
            cout<<date.toLongLong()<<" "<<date.Zeller()<<" ";
            ++cnt;
            if(cnt==7){
                cnt=0;
                puts("");
            }
    
            date.nextDate();
        }
        //cout<<date.Zeller();
    }
    
  • 相关阅读:
    二分数组的一些搜索方法
    获取图像lbp特征
    字符串的模糊搜索
    Python numpy读取图片方法
    红方人员实战手册转载
    libuv的交叉编译
    Gogs的交叉编译与配置
    配置PHP8与Nginx并启动nextcloud
    hi3798mv100SDK上DropBear的交叉编译
    Nginx的交叉编译
  • 原文地址:https://www.cnblogs.com/Yinku/p/11297949.html
Copyright © 2011-2022 走看看