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();
    }
    
  • 相关阅读:
    【MyLocations】标记位置App开发体会
    iOS开发-Core Location和Map Kit
    iOS开发-轻点、触摸和手势
    iOS开发-GCD和后台处理
    iOS开发-block使用与多线程
    iOS开发-数据持久化
    iOS开发-为程序添加应用设置
    对iOS中MVC的理解
    docker
    linux shell
  • 原文地址:https://www.cnblogs.com/Yinku/p/11297949.html
Copyright © 2011-2022 走看看