30求调,后面点全RE,本地运行第四个数据没问题
查看原帖
30求调,后面点全RE,本地运行第四个数据没问题
1387566
LaFanCYC楼主2024/10/11 20:02

代码如下```cpp

#include<bits/stdc++.h>
using namespace std;
int s[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 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=0; j<=4; j++) {
			int tmp1;
			tmp1=shun1(s[i],j);
			a[i].insert(tmp1);
			for(int q=2; q<=9; q++) {
				tmp1=shun1(tmp1,j);
				a[i].insert(tmp1);
			}
		}
		for(int j=0; j<=3; j++) {
			int tmp1;
			tmp1=shun1(s[i],j);
			tmp1=shun1(tmp1,j+1);
			a[i].insert(tmp1);
			for(int q=2; q<=9; q++) {
				tmp1=shun1(tmp1,j);
				tmp1=shun1(tmp1,j+1);
				a[i].insert(tmp1);
			}
		}
	}
	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);
			}
		}
		cout<<a[n].size();
	}
	return 0;
}
2024/10/11 20:02
加载中...