赞
踩
给定 a,b,求 1≤x< 中有多少个 x 与 互质。
由于答案可能很大,你只需要输出答案对 998244353 取模的结果。
输入一行包含两个整数分别表示 a,b,用一个空格分隔。
输出一行包含一个整数表示答案。
对于 30% 的评测用例,≤;
对于 70% 的评测用例,a≤,b≤;
对于所有评测用例,1≤a≤,1≤b≤。
2 5
16
12 7
11943936
对欧拉函数不清楚的可以参考【模板】AcWing873. 《欧拉函数》(C++)
- #include <iostream>
- #include <cstring>
- #include <algorithm>
-
- using namespace std;
-
- typedef long long LL;
-
- const int MOD = 998244353;
-
- LL qmi(LL a, LL b)
- {
- LL res = 1;
- while (b)
- {
- if (b & 1) res = res * a % MOD;
- a = a * a % MOD;
- b >>= 1;
- }
- return res;
- }
-
- int main()
- {
- LL a, b;
- cin >> a >> b;
-
- if (a == 1)
- {
- cout << 0 << endl;
- return 0;
- }
-
- LL res = a, x = a;
- for (int i = 2; i * i <= x; i ++ )
- if (x % i == 0)
- {
- while (x % i == 0) x /= i;
- res = res / i * (i - 1);
- }
-
- if (x > 1) res = res / x * (x - 1);
-
- cout << res * qmi(a, b - 1) % MOD << endl;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。