屎山模拟求调。。
查看原帖
屎山模拟求调。。
1387566
LaFanCYC楼主2024/10/10 19:43

轻点喷。。```cpp

#include<bits/stdc++.h>
using namespace std;
int s[10];
int flag[10];
set<int> a[10];
int m(int x,int y) {
	int ans=1;
	for(int i=1; i<=y; i++)
		ans*=x;
	return ans;
}
int shun1(int x,int y) {
	int sum,num;
	num=x%(m(10,y))/(m(10,y-1));
	if(num+1<=9) sum=x+m(10,y);
	else sum=x+9*m(10,y);
	return x;
}
int ni1(int x,int y) {
	int sum,num;
	num=x%(m(10,y))/(m(10,y-1));
	if(num-1>=0) sum=x-m(10,y);
	else sum=x+9*m(10,y);
	return sum;
}
int main() {
	int n,x1,x2,x3,x4,x5;
	cin>>n;
	for(int i=1; i<=n; i++) {
		cin>>x1>>x2>>x3>>x4>>x5;
		s[i]=x1*10000+x2*1000+x3*100+x4*10+x5;
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=5; j++) {
			int tmp1,tmp2;
			tmp1=shun1(s[i],j);
			tmp2=ni1(s[i],j);
			a[i].insert(tmp1);
			a[i].insert(tmp2);
			for(int q=2; q<=10; q++) {
				tmp1=shun1(tmp1,j);
				tmp2=ni1(tmp2,j);
				a[i].insert(tmp1);
				a[i].insert(tmp2);
			}
		}
		for(int j=1; j<=4; j++) {
			int tmp1,tmp2;
			tmp1=shun1(s[i],j);
			tmp1=shun1(tmp1,j+1);
			tmp2=ni1(s[i],j);
			tmp2=ni1(tmp2,j+1);
			a[i].insert(tmp1);
			a[i].insert(tmp2);
			for(int q=2; q<=10; q++) {
				tmp1=shun1(tmp1,j);
				tmp1=shun1(tmp1,j+1);
				tmp2=ni1(tmp2,j);
				tmp2=ni1(tmp2,j+1);
				a[i].insert(tmp1);
				a[i].insert(tmp2);
			}
		}
	}
	if(n==1) cout<<a[1].size();
	else {
		for(int i=2; i<=n; i++) {
			set<int>::iterator it;
			it=a[i].begin();
			for(; it!=a[i].end(); it++) {
				if(a[i-1].find(*it)==a[i-1].end()) a[i].erase(it),it--;
			}
		}
		cout<<a[n].size();
	}
	return 0;
}
2024/10/10 19:43
加载中...