数据过水?
查看原帖
数据过水?
945545
jubingkun楼主2023/10/22 07:53

给出数据

1
0 0 0 0 1

正确输出

81

而我的代码

#include<iostream>
#include<cstdio>
using namespace std;
const int MAXN=15,N=1e6+6;
int cnt,n;
int vis[N],a[MAXN][MAXN];
int main(){
	ios::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=5;++j)	cin>>a[i][j];
		for(int b=0;b<10;++b){
			vis[b*10000+a[i][2]*1000+a[i][3]*100+a[i][4]*10+a[i][5]]++;
			vis[a[i][1]*10000+b*1000+a[i][3]*100+a[i][4]*10+a[i][5]]++;
			vis[a[i][1]*10000+a[i][2]*1000+b*100+a[i][4]*10+a[i][5]]++;
			vis[a[i][1]*10000+a[i][2]*1000+a[i][3]*100+b*10+a[i][5]]++;
			vis[a[i][1]*10000+a[i][2]*1000+a[i][3]*100+a[i][4]*10+b]++;
		}
		for(int b=0;b<10;++b){
			vis[((a[i][1]+b)%10)*10000+((a[i][2]+b)%10)*1000+a[i][3]*100+a[i][4]*10+a[i][5]]++;
			vis[a[i][1]*10000+((a[i][2]+b)%10)*1000+((a[i][3]+b)%10)*100+a[i][4]*10+a[i][5]]++;
			vis[a[i][1]*10000+a[i][2]*1000+((a[i][3]+b)%10)*100+((a[i][4]+b)%10)*10+a[i][5]]++;
			vis[a[i][1]*10000+a[i][2]*1000+a[i][3]*100+((a[i][4]+b)%10)*10+((a[i][5]+b)%10)]++;
		}
	}
	for(int i=1;i<=1e6;++i)
		if(vis[i]>=n)	cnt++;
	cout<<cnt-n;
	return 0;
}

会输出

80

原因是没有判断 0 0 0 0 0 的情况

2023/10/22 07:53
加载中...