求助!不知为啥,样例有一些可以过有一些不可以
查看原帖
求助!不知为啥,样例有一些可以过有一些不可以
780141
UNNN楼主2022/10/6 21:28
#include <iostream>
#include <cmath>
using namespace std;
const int N = 1e5 + 5;
int q, r[N];
int cury = -4713, curm = 1, curd = 1, cmdays;
bool curleap, isbc = true, cbc[N];
int couter[N][3], s = 0;
void updateleap(){
	if((cury == 1582 && curm == 10 && curd >= 15) || (cury == 1582 && curm > 10) || cury > 1582){
		if(cury % 400 == 0 || (cury % 4 == 0 && cury % 100 != 0)){
			curleap = true;
		}
		else{
			curleap = false;
		}
	}
	else if((cury == 1582 && curm == 10 && curd <= 4) || (cury == 1582 && curm < 10) || cury < 1582){
		if(cury % 4 == 0){
			curleap = true;
		}
		else{
			curleap = false;
		}
	}
	return ;
}
void updatecmdays(){
	if(curm == 2){
		if(curleap){
			cmdays = 29;
		}
		else{
			cmdays = 28;
		}
	}
	else{
		if(curm <= 7){
			if(curm % 2 == 0){
				cmdays = 30;
			}
			else{
				cmdays = 31;
			}
		}
		else{
			if(curm % 2 == 0){
				cmdays = 31;
			}
			else{
				cmdays = 30;
			}
		}
	}
	return ;
}
void updatebc(){
	if(cury < 0){
		isbc = true;
	}
	else if(cury > 0){
		isbc = false;
	}
	return ;
}
void addtime(int day){
	int x = day;
	updateleap();
	updatecmdays();
	updatebc();
	while(x > 0){
		cnt++;
		curd++;
		if(cury == 1582 && curm == 10 && curd == 5){
			curd = 15;
		}
		if(curd > cmdays){
			curd = 1;
			curm++;
			updatecmdays();
			if(curm == 13){
				curm = 1;
				cury++;
				if(cury == 0){
					cury = 1;
				}
				updatecmdays();
				updateleap();
				updatebc();
			}
		}
		x--;
	}
	updatebc();
	return ; 
}
int main()
{
	cin >> q;
	for(int i = 0;i < q;i++){
		cin >> r[i];
	}
	
	for(int i = 0;i < q;i++){
		addtime(r[i]);
		couter[s][0] = curd;
		couter[s][1] = curm;
		couter[s][2] = fabs(cury);
		cbc[s] = isbc;
		cury = -4713;
		curm = 1;
		curd = 1;
		s++;
	}
	for(int i = 0;i < s;i++){
		cout << couter[i][0] << " " << couter[i][1] << " " << couter[i][2];
		if(cbc[i]){
			cout << " BC";
			if(i < s - 1){
				cout << endl;
			}
		}
		else{
			if(i < s - 1){
				cout << endl;
			}
		}
	}
	return 0;
}

2022/10/6 21:28
加载中...