1 条题解
-
2chrB LV 8 MOD @ 2017-10-30 21:01:18
400年一个周期(365*400+97)%7==0
所以先处理到400年
然后mod掉
最后是随便改了个错的,比较傻长,可以压很多行XO;
代码自己慢慢看,没时间细讲hahaha#include<bits/stdc++.h> using namespace std; int a,b,c,d,cnt=0,mouth,day,countt=1; int m[13]={31,29,31,30,31,30,31,31,30,31,30,31}; long long t,ans; int main() { cin>>a>>b>>c>>t; b--; mouth=b;cnt=c;day=1; if(t<146097) while(t--) { cnt++; day++; if(mouth==1&&cnt==29) if((a%4)||(!(a%100)&&(a%400)))cnt=1,mouth++; if(cnt==m[mouth]+1)cnt=1,mouth++; if(mouth==12){mouth=0;a++;} if(day==8)day=1; if(mouth==b)if(cnt==c)if(day==1)ans++; } else { long long p=0; while(countt<=146097) { countt++; cnt++; day++; if(mouth==1&&cnt==29) if((a%4)||(!(a%100)&&(a%400)))cnt=1,mouth++; if(cnt==m[mouth]+1)cnt=1,mouth++; if(mouth==12){mouth=0;a++;} if(day==8)day=1; if(mouth==b)if(cnt==c)if(day==1)p++; } ans=p*(t/146097);t%=146097; while(t--) { cnt++; day++; if(mouth==1&&cnt==29) if((a%4)||(!(a%100)&&(a%400)))cnt=1,mouth++; if(cnt==m[mouth]+1)cnt=1,mouth++; if(mouth==12){mouth=0;a++;} if(day==8)day=1; if(mouth==b)if(cnt==c)if(day==1)ans++; } } cout<<ans<<endl; return 0; }
- 1
信息
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 通过率
- 50%
- 上传者