真的调不出来了。。。看错误提示应该有个坑点没想到。。。求大佬帮忙
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long q,n,cun[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
//freopen("julian3.in","r",stdin);
//freopen("julian.out","w",stdout);
scanf("%lld",&q);
while(q--){
scanf("%lld",&n);
if(n>=1721424){
n-=1721424;
if(n>=577737){
n-=577737;
long long nian=1582,o=0,yue=10;
while(n>=1461){
long long zh=nian;
nian+=n/1461*4,n%=1461;
long long suan=nian/100-zh/100-nian/400+zh/400;
n+=suan;
}
if(n>=365){
nian+=1;
n-=365;
if(n>=366){
nian+=1;
if(nian%100==0&&nian%400!=0)n-=365;
else n-=366;
if(n>=365){
nian+=1;
n-=365;
}
}
else if(!((nian+1)%100==0&&(nian+1)%400!=0))o=1;
}
n+=1;
for(int i=10;i<=12;++i)
if(i!=2)
if(n>cun[i]){
n-=cun[i];
yue+=1;
if(i==12){
i=0;
yue=1;
nian+=1;
}
}
else break;
else
if(n>cun[i]+o){
n-=cun[i]+o;
yue+=1;
}
else break;
n+=14;
if(yue!=2){
if(n>cun[yue]){
n-=cun[yue];
yue++;
if(yue>12){
yue-=12;
nian++;
}
}
}
else{
if(n>cun[yue]+o){
n-=cun[yue]+o;
yue++;
if(yue>12){
yue-=12;
nian++;
}
}
}
printf("%lld %lld %lld\n",n,yue,nian);
}
else{
long long nian=1,o=0,yue=1;
if(n>=1461)nian+=n/1461*4,n%=1461;
if(n/365>=3)o=1;
while(n>=365){
nian+=1;
n-=365;
}
n+=1;
for(int i=1;i<=12;++i)
if(i!=2)
if(n>cun[i]){
n-=cun[i];
yue+=1;
}
else break;
else
if(n>cun[i]+o){
n-=cun[i]+o;
yue+=1;
}
else break;
printf("%lld %lld %lld\n",n,yue,nian);
}
}
else{
long long nian=4713,o=0,yue=1;
if(n>=1461)nian-=n/1461*4,n%=1461;
if(n<366)o=1;
else{
nian-=1;
n-=366;
while(n>=365){
nian-=1;
n-=365;
}
}
n+=1;
for(int i=1;i<=12;++i)
if(i!=2)
if(n>cun[i]){
n-=cun[i];
yue+=1;
}
else break;
else
if(n>cun[i]+o){
n-=cun[i]+o;
yue+=1;
}
else break;
printf("%lld %lld %lld BC\n",n,yue,nian);
}
}
return 0;
}