提交时间:2022-07-19 11:51:49

运行 ID: 52293

#include<bits/stdc++.h> #define N 500005 using namespace std; int gcd(int a,int b){return !b?a:gcd(b,a%b);} char S[N],R[N],tmp[N]; int T,a,b,m,n; bool f; int main(){ scanf("%d",&T); while(T--){ scanf("%s%s",S+1,R+1); scanf("%d%d",&a,&b); m=abs(a-b); for(n=1;S[n];++n);--n; for(int i(n/gcd(n,m));i>=1;--i){ for(int j(1);j<=m;++j) tmp[j]=S[n+j-m]; for(int j(n);j>m;--j) S[j]=S[j-m]; for(int j(1);j<=m;++j) S[j]=tmp[j]; f=1;for(int j(1);j<=n;++j)if(S[j]^R[j]){f=0;break;} if(f) break; } puts(f?"yes":"no"); for(int i(1);i<=n;++i) S[i]=R[i]=0; } return 0; }