关闭

BZOJ 4173 数学 数论

标签: BZOJBZOJ4173数论
2178人阅读 评论(0) 收藏 举报
分类:

题目大意:给定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;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1180702次
    • 积分:19417
    • 等级:
    • 排名:第461名
    • 原创:742篇
    • 转载:2篇
    • 译文:0篇
    • 评论:458条
    文章分类
    最新评论