※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26008번 문제인 해시 해킹이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26008
26008번: 해시 해킹
첫째 줄에 비밀번호의 길이 $N$과 문자 종류의 개수 $M$, 정수 $A$가 주어진다. ($1 \le N, M, A \le 5\,000\,000$) 둘째 줄에 재현이가 알아낸 해시값 정수 $H$가 주어진다. ($0 \le H < M$)
www.acmicpc.net
주어진 배열 P의 첫 문자를 제외한 나머지 문자의 값이 임의로 채워져있다고 가정하자. 이 때 이 배열의 해시값이 주어진 값과 같아지게 만드는 첫 문자는 정확히 하나 존재함을 관찰하자.
위의 관찰을 이용하면 문제에서 구하는 값은
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
ll N, M, A;
ll ans = 1;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for (int i = 1; i < N; i++) {
ans = (ans * M) % 1000000007;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 26007 // C++] Codepowers (0) | 2022.12.26 |
---|---|
[BOJ 26863 // C++] Absolutely Flat (0) | 2022.12.26 |
[BOJ 26006 // C++] K-Queen (0) | 2022.12.26 |
[BOJ 15001 // C++] Frog Leaps (0) | 2022.12.26 |
[BOJ 26773 // C++] Deski kontratakują (0) | 2022.12.26 |