欧拉函数(看一遍就会系列)

简介: 欧拉函数(看一遍就会系列)

给定 a,b求 1≤x<a^b 中有多少个 x与 a^b 互质。


由于答案可能很大,你只需要输出答案对 998244353 取模的结果。


输入格式

输入一行包含两个整数分别表示 a,b用一个空格分隔。


输出格式

输出一行包含一个整数表示答案。


数据范围

对于 30% 的评测用例,ab≤10^6

对于 70% 的评测用例,a≤10^6,b≤10^9

对于所有评测用例,1≤a≤10^9,1≤b≤10^18

输入样例1:
2 5
输出样例1:
16
输入样例2:
12 7
输出样例2:
11943936

思路:题目其实就是欧拉函数的定义

完整代码:

# include<bits/stdc++.h>
# define ll long long
using namespace std;
const int mod=998244353;
ll a,b;
int qmi(ll a,ll b){
    int res=1;
    while(b){
        if(b%2==1){
            res=res*a%mod;
        }
        b/=2;
        a=a*a%mod;
    }
    return res;
}
 
int main()
{
    cin>>a>>b;
    ll res=qmi(a,b),t=a;
    for(ll i=2;i<=t/i;i++){
        if(t%i==0) res=res*((i-1)*qmi(i,mod-2)%mod)%mod;
        while(t%i==0) t/=i;
    }
    if(t!=1) res=res*((t-1)*qmi(t,mod-2)%mod)%mod;
    if(a==1) res=0;
    if(a==998244353&&b==1) res=998244352;
    cout<<res;
    return 0;
}
 
相关文章
|
5月前
高等数学II-知识点(1)——原函数的概念、不定积分、求原函数的两种常用方法 (凑微分法、第二换元法)、分部积分法、有理函数原函数求法、典型三角函数原函数求法
高等数学II-知识点(1)——原函数的概念、不定积分、求原函数的两种常用方法 (凑微分法、第二换元法)、分部积分法、有理函数原函数求法、典型三角函数原函数求法
105 1
|
6月前
|
C语言
每天一道C语言编程(递归:斐波那契数,母牛的故事)
每天一道C语言编程(递归:斐波那契数,母牛的故事)
39 0
|
6月前
|
算法 搜索推荐 程序员
C语言第三十练——递归求解1+2+……+n
C语言第三十练——递归求解1+2+……+n
161 1
|
6月前
|
算法 搜索推荐 程序员
C语言第二十八练 对数的相关应用
C语言第二十八练 对数的相关应用
50 0
|
6月前
|
算法 搜索推荐 程序员
C语言第三十一练——递归求解n位斐波那契数列
C语言第三十一练——递归求解n位斐波那契数列
48 0
|
6月前
|
算法 搜索推荐 程序员
C语言第二十四练 欧拉函数的利用
C语言第二十四练 欧拉函数的利用
48 0
|
6月前
|
算法 搜索推荐 程序员
C语言第二十二练——扩展欧几里得算法
C语言第二十二练——扩展欧几里得算法
65 0
|
6月前
|
C语言
c语言编程练习题:7-58 求幂级数展开的部分和
c语言编程练习题:7-58 求幂级数展开的部分和
75 0
|
6月前
考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
111 0
|
机器学习/深度学习
数论整理之欧拉函数
数论整理之欧拉函数
133 0