C++/백준 C++

[백준]C++ 2526 싸이클[구현]

CE : 하랑 2024. 11. 25. 15:34

 

 

 

코드

#include <iostream>
#include <map>

int main()
{
	std::map<int, int> Check;

	int N, P;

	std::cin >> N >> P;

	int Calnum = N;
	++Check[Calnum];

	int count = 0;

	while (true)
	{
		Calnum = Calnum * N;
		Calnum = Calnum % P;

		// 반복되는 부분에 포함된 서로 다른 수의 개수
		// 한싸이클 확인
		if (Check[Calnum] == 2)
		{
			break;
		}

		++Check[Calnum];
	}

	for (int i = 0; i < P; i++)
	{
		if (Check[i] == 2)
		{
			++count;
		}
	}

	std::cout << count;

	return 0;
}