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

给定 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;
}
相关推荐
小 黄 鸡9 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
无敌贵点大王14 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
程序 代码狂人15 小时前
数据开发面试【问答完整版|带深挖追问 + 扩展回答】
面试·职场和发展
浅念-17 小时前
动态规划:线性DP——多状态DP与子数组专题笔记
c++·笔记·算法·leetcode·职场和发展·动态规划·力扣
天真小巫19 小时前
2026.10.14总结
职场和发展
鸥梨菌Honevid19 小时前
UVM 面试高频:uvm_test_top 与 uvm_config_db 路径机制全解析
数据库·面试·职场和发展
Interview Aid11220 小时前
Capital One Interview 完整指南:招聘流程、OA 真题与技术面试准备
面试·职场和发展
虚无的纽扣20 小时前
【力扣刷题】第四天:三数之和、四数之和
算法·leetcode·职场和发展
_不会dp不改名_20 小时前
leetcode_3273 数位平方和的最大值
算法·leetcode·职场和发展
考研保研资料分享1 天前
车辆与机械保研经验合辑:西交、浙大预推免与专业笔试面试复盘
面试·职场和发展