上周闲来无事,看了一下之前提高组写的代码,当时出考场都觉得第一题AC了,出来却是零分。结果发现第一题当时多加了一个循环,那个循环是因为我当时过不了第二个样例才加的,结果导致全部WA掉了。像我这种已经老了,希望后人有时拿不满的题不要过于追求样例,拿到应得的分。(第一段代码是零分代码,第二段代码是80分的)
#include<bits/stdc++.h>
using namespace std;
int a[101],b[101],c[101],d[101],e[101],vis[11][11][11][11][11];
int main()
{
// freopen("lock.in","r",stdin);
// freopen("lock.out","w",stdout);
int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i]>>d[i]>>e[i];
vis[a[i]][b[i]][c[i]][d[i]][e[i]]=-10;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<=9;j++)
{
if(j!=a[i])
{
vis[j][b[i]][c[i]][d[i]][e[i]]++;
if(vis[j][b[i]][c[i]][d[i]][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=b[i])
{
vis[a[i]][j][c[i]][d[i]][e[i]]++;
if(vis[a[i]][j][c[i]][d[i]][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=c[i])
{
vis[a[i]][b[i]][j][d[i]][e[i]]++;
if(vis[a[i]][b[i]][j][d[i]][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=d[i])
{
vis[a[i]][b[i]][c[i]][j][e[i]]++;
if(vis[a[i]][b[i]][c[i]][j][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=e[i])
{
vis[a[i]][b[i]][c[i]][d[i]][j]++;
if(vis[a[i]][b[i]][c[i]][d[i]][j]==n) sum++;
}
}
}
for(int i=1;i<=n;i++)
{
if(vis[a[i]][b[i]][c[i]][d[i]][e[i]]) sum++;
}
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=9;j++)
{
vis[(a[i]+j)%10][(b[i]+j)%10][c[i]][d[i]][e[i]]++;
if(vis[(a[i]+j)%10][(b[i]+j)%10][c[i]][d[i]][e[i]]==n)
{
sum++;
}
}
for(int j=1;j<=9;j++)
{
vis[a[i]][(b[i]+j)%10][(c[i]+j)%10][d[i]][e[i]]++;
if(vis[a[i]][(b[i]+j)%10][(c[i]+j)%10][d[i]][e[i]]==n)
{
sum++;
}
}
for(int j=1;j<=9;j++)
{
vis[a[i]][b[i]][(c[i]+j)%10][(d[i]+j)%10][e[i]]++;
if(vis[a[i]][b[i]][(c[i]+j)%10][(d[i]+j)%10][e[i]]==n)
{
sum++;
}
}
for(int j=1;j<=9;j++)
{
vis[a[i]][b[i]][c[i]][(d[i]+j)%10][(e[i]+j)%10]++;
if(vis[a[i]][b[i]][c[i]][(d[i]+j)%10][(e[i]+j)%10]==n)
{
sum++;
}
}
}
cout<<sum<<endl;
}

#include<bits/stdc++.h>
using namespace std;
int a[101],b[101],c[101],d[101],e[101],vis[11][11][11][11][11];
int main()
{
// freopen("lock.in","r",stdin);
// freopen("lock.out","w",stdout);
int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i]>>d[i]>>e[i];
vis[a[i]][b[i]][c[i]][d[i]][e[i]]=-10;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<=9;j++)
{
if(j!=a[i])
{
vis[j][b[i]][c[i]][d[i]][e[i]]++;
if(vis[j][b[i]][c[i]][d[i]][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=b[i])
{
vis[a[i]][j][c[i]][d[i]][e[i]]++;
if(vis[a[i]][j][c[i]][d[i]][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=c[i])
{
vis[a[i]][b[i]][j][d[i]][e[i]]++;
if(vis[a[i]][b[i]][j][d[i]][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=d[i])
{
vis[a[i]][b[i]][c[i]][j][e[i]]++;
if(vis[a[i]][b[i]][c[i]][j][e[i]]==n) sum++;
}
}
for(int j=0;j<=9;j++)
{
if(j!=e[i])
{
vis[a[i]][b[i]][c[i]][d[i]][j]++;
if(vis[a[i]][b[i]][c[i]][d[i]][j]==n) sum++;
}
}
}
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=9;j++)
{
vis[(a[i]+j)%10][(b[i]+j)%10][c[i]][d[i]][e[i]]++;
if(vis[(a[i]+j)%10][(b[i]+j)%10][c[i]][d[i]][e[i]]==n)
{
sum++;
}
}
for(int j=1;j<=9;j++)
{
vis[a[i]][(b[i]+j)%10][(c[i]+j)%10][d[i]][e[i]]++;
if(vis[a[i]][(b[i]+j)%10][(c[i]+j)%10][d[i]][e[i]]==n)
{
sum++;
}
}
for(int j=1;j<=9;j++)
{
vis[a[i]][b[i]][(c[i]+j)%10][(d[i]+j)%10][e[i]]++;
if(vis[a[i]][b[i]][(c[i]+j)%10][(d[i]+j)%10][e[i]]==n)
{
sum++;
}
}
for(int j=1;j<=9;j++)
{
vis[a[i]][b[i]][c[i]][(d[i]+j)%10][(e[i]+j)%10]++;
if(vis[a[i]][b[i]][c[i]][(d[i]+j)%10][(e[i]+j)%10]==n)
{
sum++;
}
}
}
cout<<sum<<endl;
}