• <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 閱讀(211) 評論(0)  編輯 收藏 引用 所屬分類: others

            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久午夜福利电影| 久久久久九国产精品| 青青草原精品99久久精品66| 尹人香蕉久久99天天拍| 亚洲午夜久久久久久久久久| 久久精品卫校国产小美女| 91精品国产乱码久久久久久| 国产激情久久久久影院老熟女免费| 色婷婷狠狠久久综合五月| 影音先锋女人AV鲁色资源网久久| 国产精品福利一区二区久久| 亚洲另类欧美综合久久图片区| 国产成人精品三上悠亚久久| 亚洲欧美日韩精品久久| 国产成人精品久久| 久久伊人五月天论坛| 99国产欧美精品久久久蜜芽| 国产精品99久久久久久宅男| 久久亚洲私人国产精品| 欧美久久久久久精选9999| 精品综合久久久久久888蜜芽| 成人亚洲欧美久久久久| 久久成人国产精品二三区| 亚洲狠狠婷婷综合久久蜜芽| 亚洲国产精品无码久久久久久曰| 青青青青久久精品国产h| 欧美喷潮久久久XXXXx| 2021久久精品免费观看| 久久国产福利免费| 开心久久婷婷综合中文字幕| 国产精品无码久久久久久| 中文字幕久久波多野结衣av| 久久强奷乱码老熟女网站| 国产精品乱码久久久久久软件| 一本色道久久88加勒比—综合| 精品久久久噜噜噜久久久| 欧美熟妇另类久久久久久不卡| 亚洲精品无码成人片久久| 久久综合给合久久国产免费| 久久99精品国产麻豆宅宅| 国产成人精品综合久久久久|