码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 4173: 数学

时间:2017-02-18 20:17:27      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:input   height   答案   整数   page   sum   ++   ast   put   

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

 

BZOJ 4173: 数学

标签:input   height   答案   整数   page   sum   ++   ast   put   

原文地址:http://www.cnblogs.com/yousiki/p/6413892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!