求hack(数据不要太大
查看原帖
求hack(数据不要太大
782898
Time_Limit_Exceed楼主2022/10/4 20:14
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=15;
int f[N];
signed main(){
	/*freopen("julian.in","r",stdin);
	freopen("julian.out","w",stdout);*/
	f[1]=31;
	f[2]=28;
	f[3]=31;
	f[4]=30;
	f[5]=31;
	f[6]=30;
	f[7]=31;
	f[8]=31;
	f[9]=30;
	f[10]=31;
	f[11]=30;
	f[12]=31;
	int Q;cin>>Q;
	while(Q--){
		int r;cin>>r;
		int d,m,y;
		if(r<=30){
			d=r+1;
			m=1;
		}
		else if(r<=59){
			d=r-30;
			m=2;
		}
		else if(r<=90){
			d=r-59;
			m=3;
		}
		else if(r<=120){
			d=r-90;
			m=4;
		}
		else if(r<=151){
			d=r-120;
			m=5;
		}
		else if(r<=181){
			d=r-151;
			m=6;
		}
		else if(r<=212){
			d=r-181;
			m=7;
		}
		else if(r<=243){
			d=r-212;
			m=8;
		}
		else if(r<=273){
			d=r-243;
			m=9;
		}
		else if(r<=304){
			d=r-273;
			m=10;
		}
		else if(r<=334){
			d=r-304;
			m=11;
		}
		else if(r<=365){
			d=r-334;
			m=12;
		}
		if(r<=365){
			cout<<d<<" "<<m<<" 4713 BC"<<endl;
			continue;
		}
		if(r<=730){
			y=4712;
			r-=366;
			if(r<=30){
				d=r+1;
				m=1;
			}
			else if(r<=58){
				d=r-30;
				m=2;
			}
			else if(r<=89){
				d=r-58;
				m=3;
			}
			else if(r<=119){
				d=r-89;
				m=4;
			}
			else if(r<=150){
				d=r-119;
				m=5;
			}
			else if(r<=180){
				d=r-150;
				m=6;
			}
			else if(r<=211){
				d=r-180;
				m=7;
			}
			else if(r<=242){
				d=r-211;
				m=8;
			}
			else if(r<=272){
				d=r-242;
				m=9;
			}
			else if(r<=303){
				d=r-272;
				m=10;
			}
			else if(r<=333){
				d=r-303;
				m=11;
			}
			else if(r<=364){
				d=r-333;
				m=12;
			}
		}
		else if(r<=1095){
			y=4711;
			r-=731;
			if(r<=30){
				d=r+1;
				m=1;
			}
			else if(r<=58){
				d=r-30;
				m=2;
			}
			else if(r<=89){
				d=r-58;
				m=3;
			}
			else if(r<=119){
				d=r-89;
				m=4;
			}
			else if(r<=150){
				d=r-119;
				m=5;
			}
			else if(r<=180){
				d=r-150;
				m=6;
			}
			else if(r<=211){
				d=r-180;
				m=7;
			}
			else if(r<=242){
				d=r-211;
				m=8;
			}
			else if(r<=272){
				d=r-242;
				m=9;
			}
			else if(r<=303){
				d=r-272;
				m=10;
			}
			else if(r<=333){
				d=r-303;
				m=11;
			}
			else if(r<=364){
				d=r-333;
				m=12;
			}
		}
		else if(r<=1460){
			y=4710;
			r-=1096;
			if(r<=30){
				d=r+1;
				m=1;
			}
			else if(r<=58){
				d=r-30;
				m=2;
			}
			else if(r<=89){
				d=r-58;
				m=3;
			}
			else if(r<=119){
				d=r-89;
				m=4;
			}
			else if(r<=150){
				d=r-119;
				m=5;
			}
			else if(r<=180){
				d=r-150;
				m=6;
			}
			else if(r<=211){
				d=r-180;
				m=7;
			}
			else if(r<=242){
				d=r-211;
				m=8;
			}
			else if(r<=272){
				d=r-242;
				m=9;
			}
			else if(r<=303){
				d=r-272;
				m=10;
			}
			else if(r<=333){
				d=r-303;
				m=11;
			}
			else if(r<=364){
				d=r-333;
				m=12;
			}
		}
		else if(r<=1721423){
			int t=r/1461;
			r%=1461;
			y=4713-t*4;
			if(r<=30){
				d=r+1;
				m=1;
			}
			else if(r<=59){
				d=r-30;
				m=2;
			}
			else if(r<=90){
				d=r-59;
				m=3;
			}
			else if(r<=120){
				d=r-90;
				m=4;
			}
			else if(r<=151){
				d=r-120;
				m=5;
			}
			else if(r<=181){
				d=r-151;
				m=6;
			}
			else if(r<=212){
				d=r-181;
				m=7;
			}
			else if(r<=243){
				d=r-212;
				m=8;
			}
			else if(r<=273){
				d=r-243;
				m=9;
			}
			else if(r<=304){
				d=r-273;
				m=10;
			}
			else if(r<=334){
				d=r-304;
				m=11;
			}
			else if(r<=365){
				d=r-334;
				m=12;
			}
			if(r<=365){
				cout<<d<<" "<<m<<" "<<y<<" BC"<<endl;
				continue;
			}
			if(r<=730){
				--y;
				r-=366;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=58){
					d=r-30;
					m=2;
				}
				else if(r<=89){
					d=r-58;
					m=3;
				}
				else if(r<=119){
					d=r-89;
					m=4;
				}
				else if(r<=150){
					d=r-119;
					m=5;
				}
				else if(r<=180){
					d=r-150;
					m=6;
				}
				else if(r<=211){
					d=r-180;
					m=7;
				}
				else if(r<=242){
					d=r-211;
					m=8;
				}
				else if(r<=272){
					d=r-242;
					m=9;
				}
				else if(r<=303){
					d=r-272;
					m=10;
				}
				else if(r<=333){
					d=r-303;
					m=11;
				}
				else if(r<=364){
					d=r-333;
					m=12;
				}
			}
			else if(r<=1095){
				y-=2;
				r-=731;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=58){
					d=r-30;
					m=2;
				}
				else if(r<=89){
					d=r-58;
					m=3;
				}
				else if(r<=119){
					d=r-89;
					m=4;
				}
				else if(r<=150){
					d=r-119;
					m=5;
				}
				else if(r<=180){
					d=r-150;
					m=6;
				}
				else if(r<=211){
					d=r-180;
					m=7;
				}
				else if(r<=242){
					d=r-211;
					m=8;
				}
				else if(r<=272){
					d=r-242;
					m=9;
				}
				else if(r<=303){
					d=r-272;
					m=10;
				}
				else if(r<=333){
					d=r-303;
					m=11;
				}
				else if(r<=364){
					d=r-333;
					m=12;
				}
			}
			else if(r<=1460){
				y-=3;
				r-=1096;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=58){
					d=r-30;
					m=2;
				}
				else if(r<=89){
					d=r-58;
					m=3;
				}
				else if(r<=119){
					d=r-89;
					m=4;
				}
				else if(r<=150){
					d=r-119;
					m=5;
				}
				else if(r<=180){
					d=r-150;
					m=6;
				}
				else if(r<=211){
					d=r-180;
					m=7;
				}
				else if(r<=242){
					d=r-211;
					m=8;
				}
				else if(r<=272){
					d=r-242;
					m=9;
				}
				else if(r<=303){
					d=r-272;
					m=10;
				}
				else if(r<=333){
					d=r-303;
					m=11;
				}
				else if(r<=364){
					d=r-333;
					m=12;
				}
			}	
		}
		if(r<=1721423){
			cout<<d<<" "<<m<<" "<<y<<" BC"<<endl;
			continue;
		}
		else if(r<=2299160){
			r-=1721424;
			int t=r/1461;
			r%=1461;
			y=t*4;
			if(r<=30){
				d=r+1;
				m=1;
			}
			else if(r<=58){
				d=r-30;
				m=2;
			}
			else if(r<=89){
				d=r-58;
				m=3;
			}
			else if(r<=119){
				d=r-89;
				m=4;
			}
			else if(r<=150){
				d=r-119;
				m=5;
			}
			else if(r<=180){
				d=r-150;
				m=6;
			}
			else if(r<=211){
				d=r-180;
				m=7;
			}
			else if(r<=242){
				d=r-211;
				m=8;
			}
			else if(r<=272){
				d=r-242;
				m=9;
			}
			else if(r<=303){
				d=r-272;
				m=10;
			}
			else if(r<=333){
				d=r-303;
				m=11;
			}
			else if(r<=364){
				d=r-333;
				m=12;
			}
			if(r<=364){
				cout<<d<<" "<<m<<" "<<y+1<<endl;
				continue;
			}
			if(r<=729){
				y+=2;
				r-=365;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=58){
					d=r-30;
					m=2;
				}
				else if(r<=89){
					d=r-58;
					m=3;
				}
				else if(r<=119){
					d=r-89;
					m=4;
				}
				else if(r<=150){
					d=r-119;
					m=5;
				}
				else if(r<=180){
					d=r-150;
					m=6;
				}
				else if(r<=211){
					d=r-180;
					m=7;
				}
				else if(r<=242){
					d=r-211;
					m=8;
				}
				else if(r<=272){
					d=r-242;
					m=9;
				}
				else if(r<=303){
					d=r-272;
					m=10;
				}
				else if(r<=333){
					d=r-303;
					m=11;
				}
				else if(r<=364){
					d=r-333;
					m=12;
				}
			}
			else if(r<=1094){
				y+=3;
				r-=730;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=58){
					d=r-30;
					m=2;
				}
				else if(r<=89){
					d=r-58;
					m=3;
				}
				else if(r<=119){
					d=r-89;
					m=4;
				}
				else if(r<=150){
					d=r-119;
					m=5;
				}
				else if(r<=180){
					d=r-150;
					m=6;
				}
				else if(r<=211){
					d=r-180;
					m=7;
				}
				else if(r<=242){
					d=r-211;
					m=8;
				}
				else if(r<=272){
					d=r-242;
					m=9;
				}
				else if(r<=303){
					d=r-272;
					m=10;
				}
				else if(r<=333){
					d=r-303;
					m=11;
				}
				else if(r<=364){
					d=r-333;
					m=12;
				}
			}
			else if(r<=1460){
				y+=4;
				r-=1095;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=59){
					d=r-30;
					m=2;
				}
				else if(r<=90){
					d=r-59;
					m=3;
				}
				else if(r<=120){
					d=r-90;
					m=4;
				}
				else if(r<=151){
					d=r-120;
					m=5;
				}
				else if(r<=181){
					d=r-151;
					m=6;
				}
				else if(r<=212){
					d=r-181;
					m=7;
				}
				else if(r<=243){
					d=r-212;
					m=8;
				}
				else if(r<=273){
					d=r-243;
					m=9;
				}
				else if(r<=304){
					d=r-273;
					m=10;
				}
				else if(r<=334){
					d=r-304;
					m=11;
				}
				else if(r<=365){
					d=r-334;
					m=12;
				}
			}
			cout<<d<<" "<<m<<" "<<y<<endl;
		}
		else{
			y=1583;
			r-=2299160;
			if(r<=17){
				d=r+14;
				m=10;
			}
			else if(r<=47){
				d=r-17;
				m=11;
			}
			else if(r<=78){
				d=r-47;
				m=12;
			}
			else{
				r-=79;
				int t=r/1461;
				r%=1461;
				y+=t*4;
				if(r<=30){
					d=r+1;
					m=1;
				}
				else if(r<=58){
					d=r-30;
					m=2;
				}
				else if(r<=89){
					d=r-58;
					m=3;
				}
				else if(r<=119){
					d=r-89;
					m=4;
				}
				else if(r<=150){
					d=r-119;
					m=5;
				}
				else if(r<=180){
					d=r-150;
					m=6;
				}
				else if(r<=211){
					d=r-180;
					m=7;
				}
				else if(r<=242){
					d=r-211;
					m=8;
				}
				else if(r<=272){
					d=r-242;
					m=9;
				}
				else if(r<=303){
					d=r-272;
					m=10;
				}
				else if(r<=333){
					d=r-303;
					m=11;
				}
				else if(r<=364){
					d=r-333;
					m=12;
				}
				else if(r<=730){
					++y;
					r-=365;
					if(r<=30){
						d=r+1;
						m=1;
					}
					else if(r<=59){
						d=r-30;
						m=2;
					}
					else if(r<=90){
						d=r-59;
						m=3;
					}
					else if(r<=120){
						d=r-90;
						m=4;
					}
					else if(r<=151){
						d=r-120;
						m=5;
					}
					else if(r<=181){
						d=r-151;
						m=6;
					}
					else if(r<=212){
						d=r-181;
						m=7;
					}
					else if(r<=243){
						d=r-212;
						m=8;
					}
					else if(r<=273){
						d=r-243;
						m=9;
					}
					else if(r<=304){
						d=r-273;
						m=10;
					}
					else if(r<=334){
						d=r-304;
						m=11;
					}
					else if(r<=365){
						d=r-334;
						m=12;
					}
				}
				else if(r<=1095){
					y+=2;
					r-=731;
					if(r<=30){
						d=r+1;
						m=1;
					}
					else if(r<=58){
						d=r-30;
						m=2;
					}
					else if(r<=89){
						d=r-58;
						m=3;
					}
					else if(r<=119){
						d=r-89;
						m=4;
					}
					else if(r<=150){
						d=r-119;
						m=5;
					}
					else if(r<=180){
						d=r-150;
						m=6;
					}
					else if(r<=211){
						d=r-180;
						m=7;
					}
					else if(r<=242){
						d=r-211;
						m=8;
					}
					else if(r<=272){
						d=r-242;
						m=9;
					}
					else if(r<=303){
						d=r-272;
						m=10;
					}
					else if(r<=333){
						d=r-303;
						m=11;
					}
					else if(r<=364){
						d=r-333;
						m=12;
					}
				}
				else if(r<=1460){
					y+=3;
					r-=1096;
					if(r<=30){
						d=r+1;
						m=1;
					}
					else if(r<=58){
						d=r-30;
						m=2;
					}
					else if(r<=89){
						d=r-58;
						m=3;
					}
					else if(r<=119){
						d=r-89;
						m=4;
					}
					else if(r<=150){
						d=r-119;
						m=5;
					}
					else if(r<=180){
						d=r-150;
						m=6;
					}
					else if(r<=211){
						d=r-180;
						m=7;
					}
					else if(r<=242){
						d=r-211;
						m=8;
					}
					else if(r<=272){
						d=r-242;
						m=9;
					}
					else if(r<=303){
						d=r-272;
						m=10;
					}
					else if(r<=333){
						d=r-303;
						m=11;
					}
					else if(r<=364){
						d=r-333;
						m=12;
					}
				}	
			}
			int a=y/100;
			int u=a-15,p=(a-16)/4+1;
			int ans=u-p;
			if(((y%100==0&&y%4==0)&&(m<2||(m==2&&d<29)))) --ans;
			bool t=0;
			if((y%4==0&&y%100!=0)||y%400==0) t=1;
			while(1){
				if((!t&&ans>=365)){
					ans-=365;
					++y;
					if((y%4==0&&y%100!=0)||y%400==0) t=1;
				}
				else if(t&&ans>365){
					ans-=366;
					++y;
					t=0;
				}
				else break;
			}
			d+=ans;
			if((y%4==0&&y%100!=0)||y%400==0) t=1;
			while(1){
				if((y%4==0&&y%100!=0)||y%400==0) t=1;
				if(t) f[2]=29;
				else f[2]=28;
				if(d>f[m]){
					d-=f[m];
					++m;
					if(m==13) m=1,++y;
				}
				else break;
			}
			cout<<d<<" "<<m<<" "<<y<<endl;
		}
	}
	return 0;
}

~~代码有点长~~
2022/10/4 20:14
加载中...