【快速幂、欧拉函数】蓝桥杯第十四届---互质数的个数

给定 a, b,求 1 ≤ x < a^b 中有多少个 x 与 a^b 互质。由于答案可能很大,你只需要输出答案对 998244353 取模的结果。

输入格式

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

输出格式

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

样例输入

复制代码
2 5

样例输出

复制代码
16

提示

对于 30% 的评测用例,a^b ≤ 10^6 ;

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

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

cpp 复制代码
#include<iostream>
using namespace std;
typedef long long LL;
const int mod=998244353;
LL quick_pow(LL a,LL b){
	LL res=1;
	while(b){
		if(b&1) res=res*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return res;
}
LL eu(LL n){
	LL res=n;
	for(LL i=2;i<=n/i;i++){
		if(n%i==0){
			res=res*(i-1)/i%mod;
			while(n%i==0) n/=i;
		}
	}
	if(n>1) res=res*(n-1)/n%mod;
	return res;
}
int main(){
	LL a,b;
	cin>>a>>b;
	LL n=quick_pow(a,b);
	cout<<eu(n)%mod<<endl;
	return 0;
}
相关推荐
a程序小傲31 分钟前
国家电网面试被问:FactoryBean与BeanFactory的区别和动态代理生成
java·linux·服务器·spring boot·spring·面试·职场和发展
a程序小傲3 小时前
高并发下如何防止重复下单?
java·开发语言·算法·面试·职场和发展·状态模式
沉默-_-5 小时前
力扣hot100双指针专题解析2(C++)
java·c++·算法·蓝桥杯·双指针
程序员杰哥5 小时前
Pytest自动化测试框架实战
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
小袁顶风作案6 小时前
leetcode力扣——452. 用最少数量的箭引爆气球
学习·算法·leetcode·职场和发展
aloha_7897 小时前
乐信面试准备
java·spring boot·python·面试·职场和发展·maven
短剑重铸之日7 小时前
《RocketMQ研读》面试篇
java·后端·面试·职场和发展·rocketmq
努力学算法的蒟蒻8 小时前
day64(1.23)——leetcode面试经典150
面试·职场和发展
Hcoco_me9 小时前
大模型面试题88:cuda core的数量 与 开发算子中实际使用的线程 关系是什么?过量线程会发生什么情况?
人工智能·深度学习·机器学习·chatgpt·职场和发展·机器人
YuTaoShao10 小时前
【LeetCode 每日一题】3507. 移除最小数对使数组有序 I
算法·leetcode·职场和发展