求助:WA
查看原帖
求助:WA
236807
KaguyaH楼主2020/9/5 18:21

思路是直接按照题意模拟。利用递归。O(nlog)O(n\log)

不知道wsmWA了。

# define _CRT_SECURE_NO_WARNINGS
# include <cstdio>
# include <cstring>

namespace Main {
	namespace Sourse {
		typedef long unsigned int lu;
	}
	using namespace Sourse;
	enum { S = 200000 };
	static char a[S + 1], b[S + 1];
	static inline const bool eq(const lu l, const lu sa, const lu sb) {
		bool f(true);
		for (register lu i(0); i < l; ++i) f = f && a[sa + i] == b[sb + i];
		return f || !(l % 2) && eq(l / 2, sa, sb + l / 2) && eq(l / 2, sa + l / 2, sb);
	}
	static inline const void main() {
		scanf("%s%s", a, b);
		puts(eq(strlen(a), 0, 0) ? "YES" : "NO");
	}
}

signed int main() { Main::main(); return 0; }
2020/9/5 18:21
加载中...