社区讨论

改对必关!

P7075[CSP-S 2020] 儒略日参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mdbeosl4
此快照首次捕获于
2025/07/20 16:19
8 个月前
此快照最后确认于
2025/11/04 04:03
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;

//const int N=;

int T,a,b,c,day;

bool rn(int x){
	if(x<0){
		if(x%4==-1){
			return 1;
		}
		return 0;
	}else{
		if(x<=1582){
			if(x%4==0){
				return 1;
			}
			return 0;
		}else{
			if(x%400==0){
				return 1;
			}
			if(x%100==0)return 0;
			return 1;
		}
	}
}

int yue(int x,int y){
	if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){
		return 31;
	}
	if(y==4||y==6||y==9||y==11){
		return 30;
	}
	if(rn(x))return 29;
	return 28;
}

signed main(){
	freopen("julian.in","r",stdin);
	freopen("julian.out","w",stdout);
	cin>>T;
	while(T--){
		a=-4713,b=1,c=1;
		cin>>day;
		int f=day/146097;
		day%=146097;
		while(day--){
			if(a==1582&&b==10&&c==5){
                c=15;
                day--;
                continue;
            }
			c+=1;
			if(c>yue(a,b)){
				b++;
				if(b>12){
					a++;
					if(a==0){
						a++;
					}
					b=1;
				}
				c=1;
			}
			
		}
		a+=1ll*f*400;
		if(a<0){
			cout<<c<<" "<<b<<" "<<-a<<" BC"<<endl;
		}else{
			cout<<c<<" "<<b<<" "<<a<<endl;
		}
	}




	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...