提交时间:2022-07-19 12:43:56

运行 ID: 52540

#include <bits/stdc++.h> using namespace std; const int N = 500010,mod = 1000019563,k = 27; int t,a,b,p,n,l,s,val; string s1,s2,t1,t2; bool g; int gcd(int x,int y) { return !y ? x : gcd(y,x % y); } int lcm(int x,int y) { return 1LL * x * y / gcd(x,y); } int main() { cin >> t; while(t--) { cin >> s1 >> s2; cin >> a >> b; if(a > b) swap(a,b); n = s1.length(); g = false; val = 2 * lcm(b - a,n); if(s1 != s2) for(int i = 1; i <= val; i++) { if(i & 1) { t1 = s1.substr(0,a); t2 = s1.substr(a,n - a); s1 = ""; for(int j = a - 1; j >= 0; j--) s1 += t1[j]; for(int j = n - a - 1; j >= 0; j--) s1 += t2[j]; if(s1 == s2) { g = true; break; } } else { t1 = s1.substr(0,b); t2 = s1.substr(b,n - b); s1 = ""; for(int j = b - 1; j >= 0; j--) s1 += t1[j]; for(int j = n - b - 1; j >= 0; j--) s1 += t2[j]; if(s1 == s2) { g = true; break; } } } if(g) printf("yes\n"); else printf("no\n"); } return 0; }