40分有哪些原因啊QAQ
查看原帖
40分有哪些原因啊QAQ
43663
gigo_64楼主2020/11/8 16:29

如题,想求问大佬们知道的错误原因,这份代码就算了,看不得。

#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;
}
2020/11/8 16:29
加载中...