Rt. xtl&云斗ac 洛谷wa on #4
#include<bits/stdc++.h>
#define N 20
using namespace std;
void read(int& x){
int f=1;char c=getchar();x=0;
while(!(c>='0'&&c<='9')){
if(c=='-')f=-f;
c=getchar();
}
while((c>='0'&&c<='9')){
x=x*10+c-'0';
c=getchar();
}x*=f;
}
int n,a[N],zt[100010],tmp,ans;
void malrc1(int z,int T){
int tmpz=(z/T)*T+z%(T/10);
for(int i=0;i<=9;i++,tmpz+=T/10)
if(tmpz!=z)
zt[tmpz]++;
}
void malrc2(int z,int T1,int T2){
if(z%T2/(T2/10)==9)
z-=T2;
if(z%T1/(T1/10)==9)
z-=T1;
z+=T1/10,z+=T2/10;int dottle=0;//uoj 缺头
for(int i=1;i<=9;i++,z+=T1/10,z+=T2/10){
zt[z]++;
if(z%T2/(T2/10)==9)
dottle+=T2;
if(z%T1/(T1/10)==9)
dottle+=T1;
z-=dottle;dottle=0;
}
}
void malfnd1(int z){
malrc1(z,10);
malrc1(z,100);
malrc1(z,1000);
malrc1(z,10000);
malrc1(z,100000);
}
void malfnd2(int z){
for(int i=10;i<100000;i*=10)
malrc2(z,i,i*10);
}
int main(){
read(n);
for(int i=1;i<=n;i++){
read(tmp);a[i]=a[i]*10+tmp;
read(tmp);a[i]=a[i]*10+tmp;
read(tmp);a[i]=a[i]*10+tmp;
read(tmp);a[i]=a[i]*10+tmp;
read(tmp);a[i]=a[i]*10+tmp;
}
for(int i=1;i<=n;i++){
malfnd1(a[i]);
malfnd2(a[i]);
}
for(int i=1;i<=n;i++)
if(zt[a[i]]==n)
zt[a[i]]=0;
for(int i=0;i<100000;i++){
ans+=(zt[i]==n);
// if(zt[i]==n)cerr<<i<<' ';
}
printf("%d\n",ans);
return 0;
}