BZOJ 4173: 数学
2017-03-23 20:07
399 查看
Description
Input
输入文件的第一行输入两个正整数 。Output
如题Sample Input
5 6Sample Output
240HINT
N,M<=10^15分析
我们可以转换一下条件 m%k + n%k >= k等价于 ⌊n+mk⌋−⌊nk⌋ −⌊mk⌋=1无视掉前面的φ(n)∗φ(m)的话答案就是 ∑i=1n+mϕ(i)∗⌊n+mk⌋−∑i=1nϕ(i)∗⌊nk⌋−∑i=1mϕ(i)∗⌊mk⌋
我们由定理∑k|iϕ(k)=i易得出上式可化简为n∗m,那么答案就为ϕ(n)∗ϕ(m)∗n∗m。
代码
#include <bits/stdc++.h> #define MOD 998244353 #define ll long long ll read() { ll x = 0; ll f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return x * f; } ll phi(ll n) { ll tmp = n; for (ll i = 2; i * i <= n; i++) { if (n % i == 0) { tmp /= i; tmp *= i - 1; while (n % i == 0) n /= i; } } if (n != 1) tmp /= n, tmp *= n - 1; return tmp; } int main() { ll n,m; n = read(); m = read(); std::cout<<(phi(n) % MOD) * (phi(m) % MOD) % MOD * (n % MOD) % MOD * (m % MOD) % MOD<<std::endl; }
相关文章推荐
- 【BZOJ-4173】数学 欧拉函数 + 关于余数的变换
- 【欧拉函数】BZOJ4173-数学
- bzoj4173 数学
- BZOJ4173 数学
- [bzoj4173]数学
- BZOJ 4173: 数学
- [BZOJ4173]数学(数论)
- 【bzoj 4173】数学
- 【bzoj4173】【数学】【数论】
- BZOJ 4173: 数学
- 【BZOJ 4173】 数学 数论
- 【BZOJ4173】数学 欧拉函数神题
- [BZOJ4173]数学
- bzoj 4173: 数学 欧拉函数
- 【bzoj4173】数学
- bzoj 4173: 数学 (数论+sqrt求phi)
- BZOJ 4173 数学 数论
- BZOJ 4173: 数学 欧拉函数
- BZOJ-4173 数学 欧拉函数+关于余数的变换
- [BZOJ5020][THUWC2017]在美妙的数学王国中畅游(LCT)