• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            pku 3393 Lucky and Good Months by Gregorian Calendar 英語閱讀題

            哎。。怎么說呢,這種題目一點細節注意不到就是幾個小時的浪費
            總結下題目吧
            說白了就是計算公歷系統中某年某月的第一天是不是周一、周六、周日以及某年某月的最后一天是不是周五、周六、周日
            關于公歷大家知道的就不說了,說幾點大家可能不知道的
            1、關于閏年
            An year y, y > 1582 and y ≠ 1700, is a leap year if and only if(注意!1700算閏年)
            • y is divisible by 4, and

            • y is not divisible by 100 unless it is divisible by 400.

            An year y, 0 < y < 1582 is a leap year if and only if

            • y is divisible by 4.
            2、關于公歷中有11天的缺失
             11 days are eliminated starting September 3, 1752 in order for people not to rewrite history

            下面就是常規的做法了。。
            統計截止到每一年有多少天,然后將所有的lucky month和good month都找出來,順序存放在數組中,查詢的時候二分減一下就可以了~
            代碼:
             1 # include <iostream>
             2 using namespace std;
             3 int o[]={31,28,31,30,31,30,31,31,30,31,30,31},l[]={31,29,31,30,31,30,31,31,30,31,30,31};
             4 int y[10001];
             5 # include <vector>
             6 # include <algorithm>
             7 # define MON 730124
             8 # define FRI 730121
             9 # define SAT 730122
            10 # define SUN 730123
            11 vector<int> lucky,good;
            12 int main()
            13 {
            14     //init
            15     for(int i=1;i<12;i++)
            16       o[i]+=o[i-1],l[i]+=l[i-1];
            17     y[0]=0;
            18     for(int i=1;i<10000;i++)
            19     {
            20       if(i<1582&&i%4==0||i>1582&&(i%4==0&&i%100!=0||i%400==0)||i==1700)
            21           y[i]=y[i-1]+l[11];
            22       else
            23           y[i]=y[i-1]+o[11];
            24       if(i==1752) y[i]-=11;
            25     }
            26    for(int i=1;i<10000;i++)
            27    {
            28          
            29         int *m;
            30         if(i<1582&&i%4==0||i>1582&&(i%4==0&&i%100!=0||i%400==0)) m=l;
            31         else m=o;
            32         if(i==1752)
            33         {
            34           for(int j=8;j<12;j++) m[j]-=11;
            35         } 
            36         if((y[i-1]+1-MON)%7==0||(y[i-1]+1-SAT)%7==0||(y[i-1]+1-SUN)%7==0) good.push_back(i*12+1);
            37         if((y[i-1]+o[0]-FRI)%7==0||(y[i-1]+o[0]-SAT)%7==0||(y[i-1]+o[0]-SUN)%7==0) lucky.push_back(i*12+1);
            38         for(int j=1;j<12;j++)
            39         {
            40            if((y[i-1]+1+m[j-1]-MON)%7==0||(y[i-1]+1+m[j-1]-SAT)%7==0||(y[i-1]+1+m[j-1]-SUN)%7==0) good.push_back(i*12+j+1);
            41            if((y[i-1]+m[j]-FRI)%7==0||(y[i-1]+m[j]-SAT)%7==0||(y[i-1]+m[j]-SUN)%7==0) lucky.push_back(i*12+j+1);
            42         }     
            43         if(i==1752)
            44         {
            45           for(int j=8;j<12;j++) m[j]+=11;
            46         } 
            47    }
            48    int n;
            49    cin>>n;
            50    while(n--)
            51    {
            52       int y1,m1,y2,m2;
            53       cin>>y1>>m1>>y2>>m2;
            54       cout<<upper_bound(lucky.begin(),lucky.end(),y2*12+m2)-lower_bound(lucky.begin(),lucky.end(),y1*12+m1)<<" "<<upper_bound(good.begin(),good.end(),y2*12+m2)-lower_bound(good.begin(),good.end(),y1*12+m1)<<endl;
            55    }
            56    //system("pause");
            57    return 0;
            58 }
            59 


            posted on 2011-01-06 00:14 yzhw 閱讀(205) 評論(0)  編輯 收藏 引用 所屬分類: others

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            99久久人人爽亚洲精品美女| 99精品国产免费久久久久久下载| 无码人妻久久一区二区三区免费| 久久午夜福利无码1000合集| 久久亚洲私人国产精品vA| 狠狠色丁香久久综合五月| 久久丝袜精品中文字幕| 99久久精品午夜一区二区| 很黄很污的网站久久mimi色| 亚洲国产欧美国产综合久久| 久久夜色精品国产亚洲| 亚洲色大成网站WWW久久九九| 九九久久99综合一区二区| 国产精品久久久久久久人人看| 精品久久人妻av中文字幕| 久久综合鬼色88久久精品综合自在自线噜噜 | 精品久久久久久成人AV| 久久久久18| 久久99精品久久久久久秒播| 一本色道久久88精品综合| 久久久久久久亚洲精品| 日本免费一区二区久久人人澡| 久久福利资源国产精品999| 品成人欧美大片久久国产欧美| 久久天堂AV综合合色蜜桃网| 亚洲美日韩Av中文字幕无码久久久妻妇| 成人国内精品久久久久影院| 亚洲精品无码久久久久久| 国产偷久久久精品专区| 久久国内免费视频| 亚洲另类欧美综合久久图片区| 久久精品三级视频| 久久精品成人免费观看97| 国产精品激情综合久久| 国产成人精品久久亚洲| 久久精品免费一区二区三区| 99久久国产免费福利| 91精品国产色综久久| 国产亚州精品女人久久久久久 | 国产麻豆精品久久一二三| 性欧美大战久久久久久久久|