MnZn求调S T1
  • 板块题目总版
  • 楼主atarashiTLE
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/10/23 07:42
  • 上次更新2023/10/23 08:23:30
查看原帖
MnZn求调S T1
299922
atarashiTLE楼主2023/10/23 07:42

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;
}
2023/10/23 07:42
加载中...