后悔,懒了,90pts啊啊啊啊啊
查看原帖
后悔,懒了,90pts啊啊啊啊啊
117841
WDySrDbMoAuMc楼主2020/11/7 23:01

#include<bits/stdc++.h> using namespace std; inline void read(int &x) { x = 0; register char c = getchar(); while(c > '9' || c < '0') c = getchar(); do { x = (x << 3) + (x << 1) + (c ^ 48); c = getchar(); } while(c >= '0' && c <= '9'); } int Q,r,y,m,d; int a[] = {29,31,28,31,30,31,30,31,31,30,31,30,31}; inline void go_days() { --r; ++d; if(m == 2 && !(abs(y) % 4)) if(d > 29) { ++m; d = 1; } else; else if(d > a[m]) { ++m; d = 1; } if(m > 12) { ++y; m = d = 1; } } inline void go_days2() { --r; ++d; if(m == 2 && (!(y % 400) || !(y % 4) && y % 100)) if(d > 29) { ++m; d = 1; } else; else if(d > a[m]) { ++m; d = 1; } if(m > 12) { ++y; m = d = 1; } } inline void go_years() { int t = r / 1461; r -= t * 1461; y += 4 * t; while(r > 366 || abs(y) % 4 && r > 365) { r -= 365; if(!(abs(y) % 4)) --r; ++y; } } inline void go_years2() { int t = r / 146097; y += 400 * t; r -= t * 146097; while(r > 366 || (y % 4 || !(y % 4) && y % 400) && r > 365) { r -= 365; if(!(y % 400) || !(y % 4) && y % 100) --r; ++y; } } int main() { read(Q); while(Q--) { read(r); y = -4712; m = d = 1; if(r >= 2299161) { r -= 2299161; y = 1582; m = 10; d = 15; } else { go_years(); while(r) go_days(); } if(r) { while(r && (m != 1 || d != 1)) go_days2(); go_years2(); while(r)go_days2(); } if(y <= 0) printf("%d %d %d BC\n",d,m,-y + 1); else printf("%d %d %d\n",d,m,y); } return 0; }

2020/11/7 23:01
加载中...