如题,想求问大佬们知道的错误原因,这份代码就算了,看不得。
#include<bits/stdc++.h>
using namespace std;
#define in read()
#define int long long
int in{
int cnt=0,f=1;char ch=0;
while(!isdigit(ch)){
ch=getchar();if(ch=='-')f=-1;
}
while(isdigit(ch)){
cnt=cnt*10+ch-48;ch=getchar();
}return cnt*f;
}
int q;
void write(int op,int Y,int M,int D){
if(!op){
printf("%lld %lld %lld BC",D,M,Y);
}else{
printf("%lld %lld %lld",D,M,Y);
}printf("\n");
}
void niannei(int op,int isr,int Y,int M,int D,int x){
if(x<31){
write(op,Y,1,x+1);return;
}x-=31;// 2
if(x<28){
write(op,Y,2,x+1);return;
}x-=28;if(isr&&!x){
write(op,Y,2,29);return;
}
if(isr)x--;//3
if(x<31){
write(op,Y,3,x+1);return;
}x-=31;
if(x<30){
write(op,Y,4,x+1);return;
}x-=30;
if(x<31){
write(op,Y,5,x+1);return;
}x-=31;
if(x<30){
write(op,Y,6,x+1);return;
}x-=30;
if(x<31){
write(op,Y,7,x+1);return;
}x-=31;
if(x<31){
write(op,Y,8,x+1);return;
}x-=31;
if(x<30){
write(op,Y,9,x+1);return;
}x-=30;
if(x<31){
write(op,Y,10,x+1);return;
}x-=31;
if(x<30){
write(op,Y,11,x+1);return;
}x-=30;
if(x<31){
write(op,Y,12,x+1);return;
}
}
signed main(){
// freopen("julian.in","r",stdin);
// freopen("julian.out","w",stdout);
q=in;
while(q--){
int x=in;int Y,M,D;
if(x<1721424){//gong yuan qian BC
Y=4713;
int zu=x/1461;x-=zu*1461;Y-=4*zu;//? 1 1
if(x<366){
niannei(0,1,Y,1,1,x);
continue;
}x-=366;Y--;zu=x/365;x-=zu*365;Y-=zu;
niannei(0,0,Y,1,1,x);
}else
if(x<=2299160){//ru lue qi
x-=1721424;Y=1;
int zu=x/1461;x-=zu*1461;Y+=4*zu;
zu=x/365;x-=zu*365;Y+=zu;
if(zu<3){
niannei(1,0,Y,1,1,x);
}else niannei(1,1,Y,1,1,x);
}else{//geligaoli
x-=2299161;Y=1582;M=10;D=15;//1582 10 15
if(x<=16){
write(1,1582,10,15+x);continue;
}x-=17;//1582 11 1
if(x<30){
write(1,1582,11,x+1);continue;
}x-=30;
if(x<31){
write(1,1582,12,x+1);continue;
}x-=31;
Y=1583;M=1;D=1;//四百年有97个闰年146097天
int zu=x/146097;x-=146097*zu;Y+=400*zu;
if(x<=36525){ //百年内
zu=x/1461;Y+=zu*4;x-=zu*1461;
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}x-=365;//此处有个闰年
Y++;
if(x<366){
niannei(1,1,Y,1,1,x);continue;
}x-=366;Y++;
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}x-=365;Y++;
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}
}x-=36525;Y+=100;M=1;D=1;
zu=x/36524;x-=36524*zu;Y+=100*zu;
if(x<6209){
zu=x/1461;x-=zu*1461;Y+=4*zu;
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}x-=365;//此处有个闰年
Y++;
if(x<366){
niannei(1,1,Y,1,1,x);continue;
}x-=366;Y++;
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}x-=365;Y++;
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}
}Y+=17;x-=6209;//??00.1.1
if(x<365){
niannei(1,0,Y,1,1,x);continue;
}x-=365;Y+=1;
zu=x/1461;x-=zu*1461;Y+=4*zu;
zu=x/365;x-=zu*365;Y+=zu;
if(zu<3){
niannei(1,0,Y,1,1,x);
}else niannei(1,1,Y,1,1,x);
}
}
return 0;
}