为何CE玄关 AT_arc181_b
  • 板块灌水区
  • 楼主Silence_nk_zht
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/11/24 16:25
  • 上次更新2024/11/24 17:22:00
查看原帖
为何CE玄关 AT_arc181_b
763540
Silence_nk_zht楼主2024/11/24 16:25
#include<bits/stdc++.h>
using namespace std;
int t,a1,a2,b1,b2;
int lenx,leny,lens;
double lent;
string s,x,y;
int gcd(int a,int b){
	if(b==0)return a;
	return gcd(b,a%b);
}
bool check(int m){
	for(int i=0;i+m<lens;i++){
		if(s[i]!=s[i+m]){
			return 0;
		} 
	}
	return 1;
}
int main(){
	cin>>t;
	while(t--){
		cin>>s>>x>>y;
		a1=0,a2=0,b1=0,b2=0;
		lenx=x.length();
		leny=y.length();
		lens=s.length();
		for(int i=0;i<lenx;i++){
			if(x[i]=='0')a1++;
			else b1++;
		}
		for(int i=0;i<leny;i++){
			if(y[i]=='0')a2++; 
			else b2++;
		} 
		if(a1==b1){
			puts("Yes");
			continue;
		}
		lent=(double)((double)((a1-a2)*1.0/(b2-b1))*(double)lens);
		if((int)(lent)!=lent){
			puts("No");
			continue;
		}
		if(lent<0){
			puts("No");
			continue;
		}
		if(a1!=a2 && b1==b2){
			puts("No");
			continue;
		}
		lent=(int)(lent);
		int m=gcd(lent,lens);	
		if(check(m)==1)puts("Yes");
		else puts("No");
	}
	return 0;
}

2024/11/24 16:25
加载中...