社区讨论

说句闲话:研究珂学最好的方法是

灌水区参与者 4已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@m3fq4k3u
此快照首次捕获于
2024/11/13 18:13
去年
此快照最后确认于
2025/11/04 14:48
4 个月前
查看原帖
P2010
CPP
#include<bits/stdc++.h>
using namespace std;
long long a,b,sum;
long long days[] = {-1ll, 31ll, 28ll, 31ll, 30ll, 31ll, 30ll, 31ll, 31ll, 30ll, 31ll, 30ll, 31ll};
long long make_hw(string s){//前4位生成全8位
	for(long long i=3ll;i>=0ll;i--){
		s+=s[i];
	}
	return atoll(s.c_str());
}
bool is_tov(long long y,long long m,long long d){
	if (!m || m > 12ll) return false;
	if (!d) return false;
	if (m != 2ll)
	{
		if (d > days[m]) return false;
	}
	else
	{
		bool leap = (y % 400ll == 0ll) || (y % 4ll == 0ll && y % 100ll != 0ll);
		if (d > 28 + (leap? 1ll:0ll)) return false;
	}	
	return 1;
}
int main() {
	cin>>a>>b;
	if(make_hw(to_string(a/10000ll))>a)sum++;
	for(int i=a/10000ll+1ll;i<=b/10000ll-1ll;i++){
		long long the_hw=make_hw(to_string(i));
		if(is_tov(the_hw/10000ll,the_hw%10000ll/100ll,the_hw%100ll)){
			sum++;
		}
	}
	if((make_hw(to_string(b/10000))<b)&&(a/10000ll!=b/10000ll))sum++;
	cout<<sum<<'\n';
	return 0;
}
悬关求调

回复

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

正在加载回复...