• 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_{kin 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
    ", 
    29         ((phi(n) % mod) * (phi(m) % mod) % mod)
    30     *    ((n % mod) * (m % mod) % mod) % mod);
    31 }

    @Author: YouSiki

  • 相关阅读:
    [YTU]_2536( C++ 长方体继承自矩形)
    [YTU]_2560(C++继承(改错题))
    [YTU]_2532(投简历)
    [YTU]_2621(B 继承 圆到圆柱体)
    stl
    noip2008双栈排序
    倍增入门水题
    noip模拟【ping】
    dp入门(LIS,LCS)
    【Luogu 1799】数列
  • 原文地址:https://www.cnblogs.com/yousiki/p/6413892.html
Copyright © 2020-2023  润新知