4173: 数学
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 462 Solved: 227
[Submit][Status][Discuss]
Description
Input
输入文件的第一行输入两个正整数 。
Output
如题
Sample Input
5 6
Sample Output
240
HINT
N,M<=10^15
Source
据说单个欧拉函数$phi(N)$可以在$O(sqrt{N})$的时间内求出来,所以只关心$sum_{kin S(n,m)}{phi{k}}$是什么。看下PoPoQQQ。
n%k+m%k≥k等价于⌊n+mk⌋−⌊nk⌋−⌊mk⌋=1
无视掉前面的φ(n)∗φ(m)的话答案就是
∑n%k+m%k≥kφ(k)
=∑n+mk=1φ(k)∗⌊n+mk⌋−∑nk=1φ(k)∗⌊nk⌋−∑mk=1φ(k)∗⌊mk⌋
那么∑nk=1φ(k)∗⌊nk⌋又是什么呢?
∑ni=1i=∑ni=1∑k|iφ(k)=∑nk=1φ(k)∗⌊nk⌋
因此答案为φ(n)∗φ(m)∗(∑n+mi=1i−∑ni=1i−∑mi=1i)=φ(
1 #include <cstdio> 2 3 typedef long long lnt; 4 5 __inline lnt phi(lnt n) 6 { 7 lnt r = n; 8 9 for (lnt i = 2; i*i <= n; ++i) 10 if (n % i == 0) 11 { 12 r = (r / i) * (i - 1); 13 while (n % i == 0)n /= i; 14 } 15 16 if (n != 1)r = (r / n) * (n - 1); 17 18 return r; 19 } 20 21 const lnt mod = 998244353LL; 22 23 lnt n, m; 24 25 signed main(void) 26 { 27 scanf("%lld%lld", &n, &m); 28 printf("%lld ", 29 ((phi(n) % mod) * (phi(m) % mod) % mod) 30 * ((n % mod) * (m % mod) % mod) % mod); 31 }
@Author: YouSiki