蒟蒻求助
查看原帖
蒟蒻求助
236970
yewanxingkong楼主2020/11/26 10:21

真的调不出来了。。。看错误提示应该有个坑点没想到。。。求大佬帮忙

#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;
}
2020/11/26 10:21
加载中...