鎬葷粨涓嬮鐩惂
璇寸櫧浜嗗氨鏄綆楀叕鍘嗙郴緇熶腑鏌愬勾鏌愭湀鐨勭涓澶╂槸涓嶆槸鍛ㄤ竴銆佸懆鍏佸懆鏃ヤ互鍙?qiáng)鏌愹q存煇鏈堢殑鏈鍚庝竴澶╂槸涓嶆槸鍛ㄤ簲銆佸懆鍏佸懆鏃?br>鍏充簬鍏巻澶у鐭ラ亾鐨勫氨涓嶈浜嗭紝璇村嚑鐐瑰ぇ瀹跺彲鑳戒笉鐭ラ亾鐨?br>1銆佸叧浜庨棸騫?br>An year y, y > 1582 and y ≠ 1700, is a leap year if and only if錛堟敞鎰忥紒1700綆楅棸騫達(dá)級(jí)
An year y, 0 < y < 1582 is a leap year if and only if
2銆佸叧浜庡叕鍘嗕腑鏈?1澶╃殑緙哄け
11 days are eliminated starting September 3, 1752 in order for people not to rewrite history
涓嬮潰灝辨槸甯歌鐨勫仛娉曚簡銆傘?br>緇熻鎴鍒版瘡涓騫存湁澶氬皯澶╋紝鐒跺悗灝嗘墍鏈夌殑lucky month鍜実ood month閮芥壘鍑烘潵錛岄『搴忓瓨鏀懼湪鏁扮粍涓紝鏌ヨ鐨勬椂鍊欎簩鍒嗗噺涓涓嬪氨鍙互浜唦
浠g爜錛?br>
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

]]>