快红温了 就差几天找不到原因
查看原帖
快红温了 就差几天找不到原因
905999
felixabc楼主2024/10/23 22:42
#include<bits/stdc++.h>
using namespace std;
int q,r,y=-4712,m=1;
int ms[20]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>r;
		for(;;){
			if(y%4!=0){
				if(y==1582){
					if(r<355){
						break;
					}
					y++;
					r-=355;
				}
				else{
					if(r<365){
						break;
					}
					y++;
					r-=365;
				}
			}
			else{
				if(y<1582){
					if(r<366){
						break;
					}
					y++;
					r-=366;
				}
				else{
					if(y%400==0){
						if(r<365){
							break;
						}
						y++;
						r-=365;
					}
					else{
						if(r<366){
							break;
						}
						y++;
						r-=366;
					}
				}
			}
		}
		for(;;){
//			cout<<m;
			if(y<1582){
				if(y%4!=0){
					if(r<ms[m]){
						break;
					}
					r-=ms[m];
					m++;
				}
				else{
					if(m==2){
						if(r<29){
							break;
						}
						r-=29;
						m++;
					}
					else{
						if(r<ms[m]){
							break;
						}
						r-=ms[m];
						m++;
					}
				}
			}
			if(y==1582){
				if(m==10){
					if(r<21){
						break;
					}
					r-=21;
				}
				else{
					if(r<ms[m]){
						break;
					}
					r-=ms[m];
					m++;
				}
			}
			if(y>1582){
				if(y%4!=0){
					if(r<ms[m]){
						break;
					}
					r-=ms[m];
					m++;
				}
				else{
					if(y%400==0){
						if(r<ms[m]){
							break;
						}
						r-=ms[m];
						m++;
					}
					else{
						if(m==2){
							if(r<29){
								break;
							}
							r-=29;
							m++;
						}
						else{
							if(r<ms[m]){
								break;
							}
							r-=ms[m];
							m++;
						}
					}
				}
			}
		}
		cout<<r+1<<" ";
		cout<<m<<" ";
		m=1;
		if(y<=0){
			cout<<y*-1+1<<" BC"<<endl;
		}
		else{
			cout<<y<<endl;
		}
		y=-4712;
	}
	return 0;
}
2024/10/23 22:42
加载中...