※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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의 첫 문자를 제외한 나머지 문자의 값이 임의로 채워져있다고 가정하자. 이 때 이 배열의 해시값이 주어진 값과 같아지게 만드는 첫 문자는 정확히 하나 존재함을 관찰하자.

 

위의 관찰을 이용하면 문제에서 구하는 값은 MN1과 같음을 알 수 있다. 이 값을 1000000007로 나눈 나머지를 출력해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#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

+ Recent posts