#include<bits/stdc++.h>
using namespace std;
int d[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int T,year,month,day,r;
bool flag,f;
inline int read()
{
int x=0;
bool w=0;
char c=getchar();
while(!isdigit(c))
w|=c=='-',c=getchar();
while(isdigit(c))
x=(x<<1)+(x<<3)+(c^48),c=getchar();
return w?-x:x;
}
inline int ksm(int a,int b)
{
int ans=1;
while(b)
{
if(b&1)
ans*=a;
a*=a;
b>>=1;
}
return ans;
}
int main()
{
freopen("julian.in","r",stdin);
freopen("julian.out","w",stdout);
T=read();
while(T--)
{
year=4713,flag=0,f=0;
r=read(),d[2]=28;
while(year)
{
// cout<<year<<' '<<month<<' '<<1<<endl;
if((year-1)%4==0) d[2]++,f=1;
for(register int i=1;i<=12;++i)
{
// if(r-d[i]>0) cout<<rn<<endl;
if(r-d[i]>0)
r-=d[i];
else
{
printf("%d %d %d BC\n",1+r,i,year);
flag=1;
break;
}
}
if(flag) break;
if(f) d[2]--,f=0;
year--;
}//公元前的儒略历
if(flag) continue;
f=0;
year=1;
while(1)
{
if(year!=1582)
{
if(year%4==0) d[2]++,f=1;
for(register int i=1;i<=12;++i)
{
if(r-d[i]>0)
r-=d[i];
else
{
flag=1;
printf("%d %d %d\n",1+r,i,year);
break;
}
}
if(flag) break;
if(f) d[2]--,f=0;
year++;
}
else
{
for(register int i=1;i<=9;++i)
{
if(r-d[i]>0)
r-=d[i];
else
{
flag=1;
printf("%d %d 1582\n",r+1,i);
break;
}
}
if(r<4)
{
flag=1;
printf("%d 10 1582\n",r+1);
break;
}
else r-=4;
break;
}
}//公元后的儒略历
if(flag) continue;
if(r<=17)
{
printf("%d 10 1582\n",r+14);
continue;
}
else r-=17;
if(r-d[11]<=0)
{
printf("%d 11 1582\n",1+r);
continue;
}
else r-=d[11];
if(r-d[12]<=0)
{
printf("%d 12 1582\n",1+r);
continue;
}
else r-=d[12];
f=0,year=1583;
while(1)
{
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
d[2]++,f=1;
}
else d[2]++,f=1;
}
for(register int i=1;i<=12;++i)
{
if(r-d[i]>0)
r-=d[i];
else
{
flag=1;
printf("%d %d %d\n",1+r,i,year);
break;
}
}
if(flag) break;
if(f) d[2]--,f=0;
year++;
}//公元后的格里高利历
}
return 0;
}
谁能告诉我哪错了??? 测了每个数据都是对的