BZOJ 4173: 数学

4173: 数学

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 462  Solved: 227
[Submit][Status][Discuss]

Description

 

Input

 输入文件的第一行输入两个正整数 。 

Output

 如题

Sample Input

5 6

Sample Output

240

HINT

 

 N,M<=10^15

 

Source

 
[Submit][Status][Discuss]

 

据说单个欧拉函数$phi(N)$可以在$O(\sqrt{N})$的时间内求出来,所以只关心$\sum_{k\in S(n,m)}{\phi{k}}$是什么。看下PoPoQQQ。

n%k+m%kk等价于n+mknkmk=1 
无视掉前面的
φ(n)φ(m)的话答案就是 
n%k+m%kkφ(k)
 
=n+mk=1φ(k)n+mknk=1φ(k)nkmk=1φ(k)mk

那么nk=1φ(k)nk又是什么呢? 
ni=1i=ni=1k|
iφ(k)=nk=1φ(k)nk

因此答案为φ(n)φ(m)(n+mi=1ini=1imi=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\n", 
29         ((phi(n) % mod) * (phi(m) % mod) % mod)
30     *    ((n % mod) * (m % mod) % mod) % mod);
31 }

 

@Author: YouSiki

 

posted @ 2017-02-18 19:25  YouSiki  阅读(259)  评论(0编辑  收藏  举报