求救,巨佬帮忙看看我的求月份部分有什么错误
查看原帖
求救,巨佬帮忙看看我的求月份部分有什么错误
540363
AKPC楼主2022/8/25 15:25
#include <bits/stdc++.h>
#define We using
#define Love namespace
#define Minecraft std
We Love Minecraft;
#define int long long
const int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
const int S=-4713;
bool tmp82=0;
bool rn(int x){
	x=fabs(x);
	if (!tmp82){
		if (x%4==1) return 1;
		return 0;
	}
	else{
		if (x%400==0) return 1;
		if (x%100==0) return 0;
		if (x%4==0) return 1;
		return 0;
	}
}
int t,n,y=S,m=1,d=1;
signed main(){
	cin>>t;
	while (t--){
		y=S,m=1,d=1,tmp82=0;
		cin>>n;
		while ((y==-1582&&n>=355)||(rn(y)&&n>=366)||(!rn(y)&&n>=365)){
			if (y==-1582) y++,n-=355,tmp82=1;
			else if (rn(y)) y++,n-=366;
			else y++,n-=365;
			if (y==0) y++;
		}
     //这个while循环是求月份的
		while ((y==-1582&&m==10&&n>=month[m-1]-10)||(rn(y)&&m==2&&n>=month[m-1]+1)||(y!=-1582&&!rn(y)&&n>=month[m-1])){
			if (y==-1582&&m==10) m++,n-=month[m-1]-10,tmp82=1;
			else if (rn(y)&&m==2) m++,n-=month[m-1]+1;
			else m++,n-=month[m-1];
		}
		y==S&&m==1?d=1+n:d=n;
		if (y<0) cout<<d<<' '<<m<<' '<<fabs(y)<<" BC"<<endl;
		else cout<<d<<' '<<m<<' '<<fabs(y)<<endl;
	}
	return 0;
}
2022/8/25 15:25
加载中...