Submission details
Task:Finding inverse
Sender:rikachu
Submission time:2025-11-17 15:31:26 +0200
Language:C++ (C++17)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#40.00 sdetails
#5ACCEPTED0.00 sdetails
#60.00 sdetails
#70.00 sdetails
#8ACCEPTED0.00 sdetails
#90.00 sdetails
#100.00 sdetails
#11ACCEPTED0.00 sdetails
#120.00 sdetails
#130.00 sdetails
#14ACCEPTED0.00 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(), (x).end()
#define mp make_pair
#define fi first
#define se second
#define pb push_back
#define IOS ios_base::sync_with_stdio(0), cin.tie(0)
const int INF = 1001001001;
const int MAXN = 100'000;
const char br = '\n';
using ll = long long;
using vi = vector<int>;
using pii = pair<int, int>;


int nxt() {
	int x;
	cin >> x;
	return x;
}

vector<int> factors(int n) {
	vector<int> f;
	for (int x = 2; x * x <= n; x++) {
		while (n % x == 0) {
			f.push_back(x);
			x /= x;
		}
	}
	if (n > 1) 
		f.push_back(n);
	return f;
}

int gcd(int a, int b) {
  while (b) {
    a %= b;
    swap(a, b);
  }
  return a;
}

int phi(int n) {
	int result = n;
	for (int i = 2; i * i <= n; i++) {
		if (n % i == 0) {
			while (n % i == 0)
				n/= i;
			result -= result / i;
		}
	}
	if (n > 1)
		result -= result / n;
	return result;
}

ll binpow(ll a, ll b) {
	ll res = 1;
	while (b > 0) {
		if (b & 1)
			res = res * a;
		a = a * a;
		b >>= 1;
	}
	return res;
}


int main() {
	IOS;

	auto a = nxt();
	auto m = nxt();

	if (gcd(a, m) != 1) {
		cout << -1 << br;
		return 0;
	}

	auto totient = phi(m);
	cout << binpow(a, totient - 1) % m << br;

	return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
6 7

correct output
6

user output
6

Test 2

Verdict: ACCEPTED

input
0 7

correct output
-1

user output
-1

Test 3

Verdict: ACCEPTED

input
5 78

correct output
47

user output
47

Test 4

Verdict:

input
89 99

correct output
89

user output
9

Test 5

Verdict: ACCEPTED

input
0 61

correct output
-1

user output
-1

Test 6

Verdict:

input
897 947

correct output
625

user output
-73

Test 7

Verdict:

input
419 538

correct output
217

user output
-229

Test 8

Verdict: ACCEPTED

input
32 938

correct output
-1

user output
-1

Test 9

Verdict:

input
184120 505187

correct output
438779

user output
0

Test 10

Verdict:

input
264601 885661

correct output
360221

user output
539662

Test 11

Verdict: ACCEPTED

input
40310 590135

correct output
-1

user output
-1

Test 12

Verdict:

input
202254499 577081420

correct output
128866679

user output
153401571

Test 13

Verdict:

input
539836073 888851205

correct output
797044652

user output
-485003282

Test 14

Verdict: ACCEPTED

input
697847215 756971670

correct output
-1

user output
-1