#P8813. 乘方(Power)

乘方(Power)

乘方(Power)

题目描述

小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 aabb,求 aba^b 的值是多少。

aba^bbbaa 相乘的值,例如 232^3 即为 3322 相乘,结果为 2×2×2=82\times 2\times 2=8

“简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。

小文很快意识到,她的程序里的变量都是 int 类型的。在大多数机器上,int 类型能表示的最大数为 23112^{31}-1,因此只要计算结果超过这个数,她的程序就会出现错误。

由于小文刚刚学会编程,她担心使用 int 计算会出现问题。因此她希望你在 aba^b 的值超过 109{10}^9 时,输出一个 -1 进行警示,否则就输出正确的 aba^b 的值。

然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。

输入格式

输入共一行,两个正整数 a,ba,b

输出格式

输出共一行,如果 aba^b 的值不超过 109{10}^9,则输出 aba^b 的值,否则输出 -1

样例输入 #1

10 9

样例输出 #1

1000000000

样例输入 #2

23333 66666

样例输出 #2

-1

数据范围

对于 10%10\% 的数据,保证 b=1b=1

对于 30%30\% 的数据,保证 b2b\le 2

对于 60%60\% 的数据,保证 b30b\le 30ab1018a^b\le {10}^{18}

对于 100%100\% 的数据,保证 1a,b1091\le a,b\le {10}^9

upd 2022.11.14 / 2025.04.02:各新增加一组 Hack 数据。

知识点与难度

本题涉及的知识点从属于 GESP 2级,难度等级:⭐(星级)


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 b30b\le 30 / 特殊: a=1a=1 / 特殊: 恰好等于 10910^9 / 特殊: b=1b=1
2 15 9~11 Hack: a>31623a>31623 单次溢出 / Hack: a=1,b=109a=1,b=10^9 超时 / Hack: 恰超阈值
3 30 12~20 中大规模 a,b105a,b\approx 10^5,压力测试
4 25 21~25 随机 a,b[1,109]a,b\in[1,10^9] 回归