372. Super Pow
2024-09-13 07:45:39
问题
Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large positive integer given in the form of an array.
Example1:
a = 2
b = [3] Result: 8
Example2:
a = 2 b = [1,0] Result: 1024
分析
根据公式 ① ② ab mod 1337 可以优化为 (a mod 1337)b mod 1337 ,所以每次计算底数的时候,计算之前和之后,都进行mod,预防结果超过整数范围。
根据公式 ③ ,可以根据题意对指数进行分解,本题的进制为10.
根据公式 ④,对计算过程进行分解,每一步都是计算 ,由于ai知道,所以每步的计算其实是计算底数。
代码
int mod = ;
int superPow(int a, vector<int>& b) {
int answer = ,n = b.size();
if( n == )
return ;
for(int i = n - ;i >= ; i--)
{
if( b[i] > )
answer = answer * Inpow(a,b[i]) % mod;
a = Inpow(a,);
}
return answer;
} int Inpow(int base,int exp){
int result = ;
base = base%mod; for(int i = exp; i > ;i = i >> )
{
if( i & == )
result = result * base %mod;
base = base * base % mod;
} return result % mod; }
最新文章
- 最全的linux命令大全,shell运维手册
- ";互联网思维";背后的谎言
- BZOJ1393 [Ceoi2008]knights
- PHP学习笔记06——面向对象版图形计算器
- 数据结构(12) -- 图的邻接矩阵的DFS和BFS
- linux命令之chown命令
- C#程序调用cmd执行命令(转)
- 大数据时代的数据存储,非关系型数据库MongoDB(一)
- Ext JS学习第三天 我们所熟悉的javascript(二)
- python内置函数(四)
- yii2 源码分析 Component类分析 (二)
- Properties类
- Jmeter 传 PUT 请求方式
- 【51nod 1785】数据流中的算法
- JVM系列1:Java内存区域
- 文件IO流
- 点击threadItem查看MessageList时传递数据
- 【Windows】DOS的常用命令
- selenium - switch_to.frame()- 内嵌表单的切换
- 安卓 Activity Fragment 生命周期