洛谷-P8813 & CSPJ-2022#1 题解
正文
准备知识:快速幂
考虑快速幂(其实本题暴力都能过,谁让我想那么多,害了自己),这里不做具体介绍,已贴网址。
对于每次快速幂前,先检查 -1
。
注意一下,由于是在每次乘方前进行了一次判断,快速幂的最后一次乘方可能会超出范围,所以快速幂结束时也要判一次。
CODE:
#include<iostream> using namespace std; int main(){ ios::sync_with_stdio(false),cin.tie(0); long long a,b; cin>>a>>b; long long ans=1; while(b>0){ if(ans>1e9 or a>1e9){//每次乘方前的判定 cout<<-1; return 0; } if(b&1) ans*=a; a*=a; b>>=1; } if(ans>1e9) cout<<-1;//特判 else cout<<ans; return 0; }
后附
日志
v1.0 on 2022.11.06: 发布
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步