蒟蒻求助_qwq_ 40pts WA了六个点 求大佬康康
查看原帖
蒟蒻求助_qwq_ 40pts WA了六个点 求大佬康康
400593
wuyiduo楼主2022/3/27 22:19
#include<bits/stdc++.h>
using namespace std;
const int bc=1721424;
const int ru=1461;
const int G=577737;
int D[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int q;
long long r;
int main(){
	scanf("%d",&q);
	while(q--){
		scanf("%lld",&r);
		r+=1;
		if(r>bc){
			r-=bc;
			if(r>G){
				long long js=(r-G)/36524;
				r+=js;
				long long os=(r-G)/146096;
				r-=os;
				r+=10;
			}
			int y=r/ru;
			int d=r%ru;
			if(d==0){
				printf("31 12 %d\n",4*y);
				continue;
			}
			if(d<=1155){
				int yy=(d+365)/365-1;
				if(d==1155){
					printf("29 2 %d\n",4*y+yy+1);
					continue;
				}
				int dd=d%365;
				if(dd==0){
					printf("31 12 %d\n",4*y+yy);
					continue;
				}
				int i=1;
				while(dd>D[i]){
					dd-=D[i];
					i++;
				}
				printf("%d %d %d\n",dd,i,4*y+yy+1);
				continue;
			}
			else{
				int yy=(d-1+365)/365-1;
				int dd=(d-1)%365;
				if(dd==0){
					printf("31 12 %d\n",4*y+yy);
					continue;
				}
				int i=1;
				while(dd>D[i]){
					dd-=D[i];
					i++;
				}
				printf("%d %d %d\n",dd,i,4*y+yy+1);
			}
		}
		else{
			int y=r/ru;
			int d=r%ru;
			if(d==0){
				printf("31 12 %d BC\n",4713-4*y+1);
				continue;
			}
			if(d<=60){
				printf("%d %d %d BC\n",d%31==0?31:d%31,d/32+1,4713-4*y);
				continue;
			}
			int yy=(d-1+365)/365-1;
			int dd=(d-1)%365;
			if(dd==0){
				printf("31 12 %d BC\n",4713-4*y-yy+1);
				continue;
			}
			int i=1;
			while(dd>D[i]){
				dd-=D[i];
				i++;
			}
			printf("%d %d %d BC\n",dd,i,4713-4*y-yy);
		}
	}
	return 0;
}
2022/3/27 22:19
加载中...