一叹世间情太苦,为爱无奈泪双流。|

IOIAK_wanguan

园龄:2年6个月粉丝:2关注:0

2022-11-06 19:32阅读: 106评论: 0推荐: 0

洛谷-P8813 & CSPJ-2022#1 题解

正文

准备知识:快速幂

考虑快速幂(其实本题暴力都能过,谁让我想那么多,害了自己),这里不做具体介绍,已贴网址。

对于每次快速幂前,先检查 a 以及快速幂中累积的 ans 是否超过题中给定范围,若超过,结束程序,输出 -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;
}

Happy End。

后附

日志

v1.0 on 2022.11.06: 发布

本文作者:wanguan

本文链接:https://www.cnblogs.com/wanguan/p/16863523.html

版权声明:本作品采用 BY-NC-SA 4.0 许可协议进行许可。

posted @   IOIAK_wanguan  阅读(106)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起