EOJ Monthly-2020.1-A题-----字符串

EOJ Monthly-2020.1-A题-----字符串_第1张图片EOJ Monthly-2020.1-A题-----字符串_第2张图片

串都是长度是14的,第7第8位要回文,第七第八位又是日,只有11和22符合,然后月份又要和几点对回文,只有五种01 ~ 10,02 ~ 20,10 ~ 01,11 ~ 11,12 ~ 21,就是说一年最多10种情况,就直接枚举年(年份有两个位置最大为5)

#include 
#include 
#include 
#include 
#include 
using namespace std;
string str[] = {"011110","012210","021120","022220","101101","102201","111111","112211","121121","122221"};
vector<string> ans;
bool check(int x){
	int a = x%10;
	x/=100;
	int b = x%10;
	return (a<=5)&&(b<=5);
}
void init(){
	for(int i = 2020;i <= 9999;i++){
		if(!check(i)) continue;
		string s = to_string(i);
		string tmp = s;
		reverse(tmp.begin(),tmp.end()); 
		for(int j = 0;j < 10;j++){
			ans.push_back(s+str[j]+tmp);
		}
	}
}
int main(){
	init();
	int n;scanf("%d",&n);
	cout<<ans[n+1]<<endl;
	return 0;
}

你可能感兴趣的:(EOJ Monthly-2020.1-A题-----字符串)