世界

誰も いない 枯れた世界で 悪戲の 意味を知ったよ

BZOJ 4173 数学 数论

题目大意:给定n,m,求φ(n)φ(m)n%k+m%kkφ(k) mod 998244353
n,m1015

我是傻逼。。。

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)=φ(n)φ(m)nm

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MOD 998244353
using namespace std;
long long n,m;
long long Phi(long long n)
{
    long long i,re=n;
    for(i=2;i*i<=n;i++)
        if(n%i==0)
        {
            re/=i;re*=i-1;
            while(n%i==0)
                n/=i;
        }
    if(n!=1) re/=n,re*=n-1;
    return re;
}
int main()
{
    cin>>n>>m;
    cout<<(Phi(n)%MOD)*(Phi(m)%MOD)%MOD*(n%MOD)%MOD*(m%MOD)%MOD<<endl;
    return 0;
}
阅读更多
文章标签: BZOJ BZOJ4173 数论
个人分类: 数论 BZOJ
上一篇BZOJ 2969 矩形粉刷 期望
下一篇BZOJ 4174 tty的求助 莫比乌斯反演
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭