样例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;
}