Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52540 | AK2022071323 | 修复符文 | C++ | 运行超时 | 45 | 1000 MS | 672 KB | 1279 | 2022-07-19 12:43:56 |
#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; }