博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Super Pow 超级次方
阅读量:6715 次
发布时间:2019-06-25

本文共 1021 字,大约阅读时间需要 3 分钟。

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 = 2b = [3]Result: 8

Example2:

a = 2b = [1,0]Result: 1024

Credits:

Special thanks to  for adding this problem and creating all test cases.

这道题题让我们求一个数的很大的次方对1337取余的值,开始一直在想这个1337有什么玄机,为啥突然给这么一个数,感觉很突兀,后来想来想去也没想出来为啥,估计就是怕结果太大无法表示,随便找个数取余吧。那么这道题和之前那道的解法很类似,我们都得对半缩小,不同的是后面都要加上对1337取余。由于给定的指数b是一个一维数组的表示方法,我们要是折半缩小处理起来肯定十分不方便,所以我们采用按位来处理,比如223 = (22)10 * 23, 所以我们可以从b的最高位开始,算出个结果存入res,然后到下一位是,res的十次方再乘以a的该位次方再对1337取余,参见代码如下:

class Solution {public:    int superPow(int a, vector
& b) { long long res = 1; for (int i = 0; i < b.size(); ++i) { res = pow(res, 10) * pow(a, b[i]) % 1337; } return res; } int pow(int x, int n) { if (n == 0) return 1; if (n == 1) return x % 1337; return pow(x % 1337, n / 2) * pow(x % 1337, n - n / 2) % 1337; }};

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
OpenIndiana
查看>>
varnish基础概念详解
查看>>
发一个windows8 下QQ应用的测试报告-精彩截图
查看>>
利用Zabbix ODBC monitoring监控MySQL
查看>>
如何设计一款优秀的短视频 SDK
查看>>
实战postfix邮件发送
查看>>
MySQL主从架构由5.5版本升级到5.6方案
查看>>
大数据时代的遨游
查看>>
从Windows 8.1光盘安装.NET Framework 3.5.1
查看>>
Create Oracle VM High Availability (HA)
查看>>
Memcache持久性分布式数据MemcacheDB
查看>>
联想计算机Lenovo ThinkCentre M910t-NO76的重装
查看>>
大话nbu四(nbu备份恢复catalog)
查看>>
IP版本6寻址体系结构
查看>>
自顶向下的数据安全
查看>>
51.本地VMware环境虚拟机的异地(Azure)容灾(中)
查看>>
华为S5328C三层交换机VRRP在项目中的配置实战
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
修改SQL Server 的排序规则
查看>>
Windows 8部署系列PART2:部署先决条件准备
查看>>