给出数据
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 的情况