70分,救救蒟蒻
查看原帖
70分,救救蒟蒻
384581
Meng142857楼主2021/2/14 19:56

样例1,2都过,但是WA#8,9,10

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main(){
	freopen("julian.in","r",stdin);
	freopen("julian.out","w",stdout);
	long long y=-4712,m=1,d=1,n,mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},Q;
	cin>>Q;
	for(int i=1;i<=Q;i++){
		cin>>n;
		if(n<=2305448){
			if(n>=2299161) {n+=10;}
			y=-4712;m=1;d=1;
			y+=(n/1461)*4;
			n%=1461;
			if(n>=366){y++;n-=366;y+=n/365;n%=365;}
			if(abs((int)y)%4==0) {mon[2]=29;}
			else{mon[2]=28;}
			while(n>=mon[m]){
				n-=mon[m];
				m++;
			}
			d+=n;
			if(y<=0) y--;
			cout<<d<<" "<<m<<" "<<abs(y)<<" ";
			if(y<0) cout<<"BC";
			cout<<endl;
		}
		else{
			y=1600;m=1;d=1;
			n-=2305448;
			y+=(n/146097)*400;
			n%=146097;
			if(n>=36525){
				y+=100;
				n-=36525;
				y+=(n/36524)*100;
				n%=36524;
				if(n>=1460){
					y+=4;
					n-=1460;
				}
			}
			y+=(n/1461)*4;
			n%=1461;
			if(n>=366){
				if(y%100!=0||y%400==0){y++;n-=366;y+=n/365;n%=365;}
				else {y+=n/365;n%=365;}
			}
			if(y%4==0&&(y%100!=0||y%400==0)) {mon[2]=29;}
			else{mon[2]=28;}
			while(n>=mon[m]){
				n-=mon[m];
				m++;
			}
			d+=n;
			cout<<d<<" "<<m<<" "<<y<<endl;
		}
	}
	return 0;
}
2021/2/14 19:56
加载中...