为什么我的代码只有40分?
#include<bits/stdc++.h>
using namespace std;
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
//freopen("P7075_5.in","r",stdin);
//freopen("julian.out","w",stdout);
int t;
cin>>t;
while(t--)
{
long long n;
scanf("%d",&n);
n++;
long long day=0,month,year,u,x;
if(n<=1721424)
{
long long p=0;
for(int i=4713;i>=1;i--)
{
if((i-1)%4==0) u=366;
else u=365;
p+=u;
if(n<=p)
{
year=i;
p-=u;
for(int j=1;j<=12;j++)
{
if(u==366&&j==2) x=29;
else x=d[j];
p+=x;
if(n<=p)
{
month=j;
p-=x;
day=n-p;
break;
}
}
break;
}
}
cout<<day<<" "<<month<<" "<<year<<" BC"<<endl;
continue;
}
n-=1721424;
if(n<=584390)
{
long long y=n/(365*3+366);
long long zong=y*(365*3+366);
n-=zong;
long long i;
if(n%(365*3+366)==0)
{
day=31;
month=12;
year=y*4;
cout<<day<<" "<<month<<" "<<year<<endl;
continue;
}
else i=y*4+1;
for(i;i<=y*4+4;i++)
{
if(i==1582) u=355;
else if(i%4==0) u=366;
else u=365;
n-=u;
if(n==0)
{
year=i;
month=12;
day=31;
break;
}
else if(n<0)
{
year=i;
n+=u;
for(int j=1;j<=12;j++)
{
if(u==355&&j==10) x=21;
else if(u==366&&j==2) x=29;
else x=d[j];
n-=x;
if(n==0)
{
if(u==355) day=31;
else day=x;
month=j;
break;
}
else if(n<0)
{
month=j;
n+=x;
if(u==355&&j==10)
{
if(n<5) day=n;
else day=n+10;
}
else day=n;
break;
}
}
break;
}
}
cout<<day<<" "<<month<<" "<<year<<endl;
continue;
}
n-=584390;
long long y=n/146097;
long long zong=y*146097;
n-=zong;
long long i;
if(n%146097==0)
{
day=31;
month=12;
year=1600+y*400;
cout<<day<<" "<<month<<" "<<year<<endl;
continue;
}
else i=1600+y*400+1;
for(i;i<=1600+y*400+400;i++)
{
if(i%400==0||(i%4==0&&i%100!=0)) u=366;
else u=365;
n-=u;
if(n==0)
{
day=31;
month=12;
year=i;
cout<<day<<" "<<month<<" "<<year<<endl;
break;
}
else if(n<0)
{
year=i;
n+=u;
for(int j=1;j<=12;j++)
{
if(u==366&&j==2) x=29;
else x=d[j];
n-=x;
if(n==0)
{
day=x;
month=j;
break;
}
else if(n<0)
{
month=j;
n+=x;
day=n;
break;
}
}
break;
}
}
cout<<day<<" "<<month<<" "<<year<<endl;
}
return 0;
}