LeetCode 372. Super Pow

简介: 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。

v2-332a6d391a8e4e82bd15133b8f4dbd37_1440w.jpg

Description



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.


Example 1:

Input: a = 2, b = [3]

Output: 8


Example 2:

Input: a = 2, b = [1,0]

Output: 1024


描述



你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。


示例 1:

输入: a = 2, b = [3]

输出: 8


示例 2:

输入: a = 2, b = [1,0]

输出: 1024


思路


  • 有以下运算法则
  • ab\%k = a\%k \quad *\quad b\%k \quad \%kab%k=a%kb%k%k
  • 我们从给定的 b 的最高位开始(数组编号是 0 的位置),计算出当前结果存入 res;
  • 计算 b 的下一位时 num 时,先将 res 乘以 10 次方,再乘以给定 x 的 num 次方,再对 1337 取余。


# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-06-27 20:41:08
# @Last Modified by:   何睿
# @Last Modified time: 2019-06-27 21:26:34
from typing import List
class Solution:
    def superPow(self, a: int, b: List[int]) -> int:
        res = 1
        for num in b:
            res = self.pow(res, 10) * self.pow(a, num) % 1337
        return res
    def pow(self, x: int, n: int) -> int:
        if n == 0:
            return 1
        if n == 1:
            return x % 1337
        return x**n % 1337

源代码文件在 这里


目录
相关文章
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
98 1
|
21天前
|
算法 C++
Leetcode第50题(Pow(x,n))
这篇文章介绍了如何使用快速幂算法解决LeetCode第50题,即实现函数pow(x, n)来计算x的n次幂,并提供了C++的代码实现。
13 0
|
3月前
|
算法 Java
LeetCode第50题Pow(x, n)
LeetCode第50题"Pow(x, n)"的解题方法,运用分而治之的策略,通过快速幂算法高效计算幂函数的结果。
LeetCode第50题Pow(x, n)
|
3月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
23 1
|
Java
Leetcode 372. Super Pow
真正的解法其实思路很简单,我随便举个例子就很容易理解了,假设要求(123^4567)%1337,只需要把这个幂式子分解成几个层次,然后把球模加到每一层中间就很容易计算出来了。
40 0
|
算法 安全 Swift
LeetCode - #50 Pow(x, n)
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
算法 API
leetcode:50.Pow(x, n)
实现 pow(x, n),即计算 x 的 n 次幂函数。
46 0
|
存储
LeetCode 313. Super Ugly Number
编写一段程序来查找第 n 个超级丑数。 超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。
95 0
LeetCode 313. Super Ugly Number
LeetCode 50. Pow(x, n)
实现pow(x,n),即计算x的n次方
83 0
LeetCode 50. Pow(x, n)
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行