From 807bbd9e248436533a5ea358f1413951c4ab3bd7 Mon Sep 17 00:00:00 2001 From: oncsr Date: Thu, 6 Nov 2025 22:12:15 +0900 Subject: [PATCH] =?UTF-8?q?[20251106]=20BOJ=20/=20G1=20/=20XOR=20Hashing?= =?UTF-8?q?=20/=20=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- khj20006/202511/06 BOJ G1 XOR Hashing.md | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 khj20006/202511/06 BOJ G1 XOR Hashing.md diff --git a/khj20006/202511/06 BOJ G1 XOR Hashing.md b/khj20006/202511/06 BOJ G1 XOR Hashing.md new file mode 100644 index 00000000..18d040cb --- /dev/null +++ b/khj20006/202511/06 BOJ G1 XOR Hashing.md @@ -0,0 +1,31 @@ +```cpp +#include +using namespace std; +using ll = long long; + +const ll MOD = 1e9 + 7; +ll N, M; + +ll power(ll a, ll b) { + if (b == 0) return 1; + if (b == 1) return a % MOD; + ll h = power(a, b >> 1) % MOD; + h = h * h % MOD; + return (b & 1) ? h * a % MOD : h; +} + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin >> N >> M; + N = (1 << N); + if (M > N) return cout << 1, 0; + + ll g = power(N, M), p = 1; + for (ll i = N; i > N - M; i--) p = (p * i) % MOD; + + ll ans = ((g - p + MOD) % MOD) * power(g, MOD - 2) % MOD; + cout << ans; + +} +```