USACO1.1|黑色星期五Friday the Thirteenth
纯暴力。枚举每一天。i,j,k分别表示年月日,mt数组存每个月的天数(遇到闰年特别判断)
开始过不了是因为想用三目运算符写闰年判断,结果发现我驾驭不了233
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include<bits/stdc++.h> using namespace std;
int mt[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int sl[7]={0};
int main(){ int n; cin>>n; int day=-1; int cnt=0; for(int i=1900;i<=1900+n-1;++i){ bool rn=0; if(i%100==0){ if(i%400==0){ rn=1; } } else{ if(i%4==0){ rn=1; } } if(rn)mt[2]=29; else mt[2]=28; for(int j=1;j<=12;++j){ for(int k=1;k<=mt[j];++k){ ++day; day%=7;
if(k==13)++sl[day]; ++cnt; } } } for(int i=5;i<7;++i){ cout<<sl[i]<<' '; } for(int i=0;i<5;++i){ cout<<sl[i]<<' '; } cout<<endl; return 0; }
|