玄关,90分求助
查看原帖
玄关,90分求助
1303237
yunyan_ads楼主2024/10/25 20:12

#10测试点WA了,不知道为什么输出的比测试点要少一天


```#include<bits/stdc++.h>
using namespace std;
int sum;
bool hw(int x){
	int a[8];
	for(int i = 1; i <= 8; i++){
		a[i] = x % 10;
		x /= 10;
	}
	int xsum = 0;
	for(int i = 1; i <= 4; i++){
		if(a[i] == a[8-i+1]) xsum++;
	}
	if(xsum == 4) return 1;
	else return 0;
}
bool ry(int x){
	x /= 10000;
	if(x % 4 == 0 && x / 100 != 0) return 1;
	else if(x % 400 == 0) return 1;
	else return 0;
}

int main(){
	int sd,ed; cin >> sd >> ed;
	for(int i = sd; i <= ed; i++){
		int msd = (i % 10000) / 100;
		int day = i % 100;
		if(hw(i)) sum++;
		if(msd == 2){
			if(ry(i) && day == 29) i += 100, i -= 29;
			if(!ry(i) && day == 28) i += 100, i -= 28; 
		}
		if( (msd == 1 || msd == 3 || msd == 5 || msd == 7 || msd == 8 || msd == 10) && day == 31){
			i += 100; i -= 31;
		}
		if( (msd == 4 || msd == 6 || msd == 9 || msd == 11) && day == 30){
			i += 100; i -= 30;
		}
		if(msd == 12 && day == 31){
			i -= 1231; i += 101; i += 10000;
		}
	}
	cout << sum;
	return 0;
}
2024/10/25 20:12
加载中...