提交时间:2022-07-19 11:51:17
运行 ID: 52258
#include<bits/stdc++.h> using namespace std; int t,a,b,len,k,d,n,flag,p=-1; string s,r,sb; int main(){ cin>>t; while(t--){ cin>>s>>r>>a>>b; p=-1; n=s.size(); k=abs(a-b); d=__gcd(k,n); for(int i=1;i<=n/d;i++){ for(int j=(i*k)%n,l=1;l<=n;l++){ if(s[(j+l-1)%n]!=r[l-1]){ flag=1; break; } } if(!flag){ cout<<"yes\n"; flag=-1; break; } flag=0; } if(flag){ flag=0; continue; } for(int i=a;i>=1;i--)sb[++p]=s[i-1]; for(int i=n;i>=a+1;i--)sb[++p]=s[i-1]; for(int i=0;i<=p;i++)s[i]=sb[i]; for(int i=1;i<=n/d;i++){ for(int j=(i*k)%n,l=1;l<=n;l++){ if(s[(j+l-1)%n]!=r[l-1]){ flag=1; break; } } if(!flag){ cout<<"yes\n"; flag=-1; break; } flag=0; } if(flag==0)cout<<"no\n"; flag=0; } }