超级次方

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

示例 1:

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

输出: 8

示例 2:

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

输出: 1024

解题思想

这道题需要计算 a^b % c 的值,其中b非常的大,大到只能使用数组来表示。这道题是ACM里面常见的快速幂的解题方式,这其中有一个数学的推论,可以看我代码里附带的那个解释。

总之,这个公式的意思就是,(a*b)%c=(a%c)*(b%c),因此我们可以在每一步计算结果之后都这么处理,防止溢出。

第二个算法部分其实很容易理解,就是可以做类似于二分的分割,比如当b是偶数的时候,我们可以转化为计算a^(b/2)后再平方,而对于基础,则再乘一个a就可以,总之你看代码就知道了

 public class Solution {
// 判断是否大于0
public static boolean morethanzero(int[] x){
for(int i=x.length-1;i>=0;i--){
if(x[i]>0)
return true;
}
return false;
}
//高精度除法
public static void div(int[] x,int y){
int tmp=0;
for(int i=0;i<x.length;i++){
x[i] += tmp*10;
tmp = x[i] % y;
x[i] = x[i] /y;
}
} public static int superPow(int a, int[] b) {
if (morethanzero(b) == false)
return 1;
a=a%1337;
boolean isEven = false;
if(b[b.length-1] % 2 == 0)
isEven = true;
div(b,2);
int result = superPow(a,b);
result = result % 1337;
result*=result;//result由于div分成了两部分,现在把两部分合在一起
result = result % 1337;
if(isEven==false){
result*=a;//奇数的话,再乘以a
result = result % 1337;
}
return result;
}
}

Leetcode 372.超级次方的更多相关文章

  1. C#版(击败100.00%的提交) - Leetcode 372. 超级次方 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...

  2. Java实现 LeetCode 372 超级次方

    372. 超级次方 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出. 示例 1: 输入: a = 2, b = [3] 输出: 8 示例 2: ...

  3. [LeetCode] Super Pow 超级次方

    Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large posi ...

  4. 372 Super Pow 超级次方

    你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出.示例 1:a = 2b = [3]结果: 8示例 2:a = 2b = [1,0]结果: 102 ...

  5. LeetCode 372

    题目: Your task is to calculate a^b mod 1337 where a is a positive integer and b is an extremely large ...

  6. [Swift]LeetCode372. 超级次方 | Super Pow

    Your task is to calculate ab mod 1337 where a is a positive integer and bis an extremely large posit ...

  7. Leetcode 517.超级洗衣机

    超级洗衣机 假设有 n 台超级洗衣机放在同一排上.开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的. 在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,与此同时将每台洗衣机 ...

  8. Leetcode 313.超级丑数

    超级丑数 编写一段程序来查找第n个超级丑数. 超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数. 示例: 输入: n = 12, primes = [2,7,13,19] ...

  9. LeetCode——372. Super Pow

    题目链接:https://leetcode.com/problems/super-pow/description/ Your task is to calculate ab mod 1337 wher ...

随机推荐

  1. [转]NopCommerce之视图设计

    本文转自:http://blog.csdn.net/hygx/article/details/7324452 Designer's Guide   Contents Overview  概述 Inst ...

  2. android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题

    svn和git的工作机制:  SVN 是集中式或者有中心式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要 ...

  3. jsp get与post请求乱码问题

    乱码问题01:<%reques.setCharacterEncoding("utf-8");%> 02:get请求乱码 001.:String 编码之后的字符串 = n ...

  4. CommonJS与ES6、AMD、CMD比较

    Javascript,javascript是一种脚本编程语言,有自己独立的语法与语义,没有javascript,也就没有其他的那些概念了. 关于ES6,可直接理解为javascript的增强版(增加了 ...

  5. 实现dedecms(PC端)全站动态浏览 并实现伪静态

    dedecms默认是生成静态文件,如何实现织梦(PC端)全站动态浏览呢? 织梦全站动态浏览方法 1. 修改首页为动态浏览 后台-生成-更新首页-勾选“仅动态浏览” 2. 修改栏目页为动态浏览 ①添加或 ...

  6. JavaEE汇总

    1.简述Spring. a)      Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,其目的是解决企业应用开发的复杂性,能够使用基本的JavaBean代替EJB,并提供了 ...

  7. 总结SQL Server窗口函数的简单使用

    总结SQL Server窗口函数的简单使用 前言:我一直十分喜欢使用SQL Server2005/2008的窗口函数,排名函数ROW_NUMBER()尤甚.今天晚上我在查看SQL Server开发的相 ...

  8. 安装 Azure CLI

    首先安装node 和 npm 的安装 官方推荐v4.4.4长期支持版 1.下载并解压 node-v4.4.4-linux-x64.tar.xz tar -xJf node-v4.4.4-linux-x ...

  9. php接口开发注意事项

    IOS Object c  强类型 Android java  强类型 wap javascript 弱类型 后台 php 弱类型 开发接口 wap和app共用 强类型语言可能要求返回的值是数组就要保 ...

  10. Codeforces Round #318 (Div. 2) C Bear and Poker (数学)

    简单题,求一下所有数的2和3的幂是任意调整的,把2和3的因子除掉以后必须相等. 求lcm,爆了long long.我得好好反省一下,对连乘不敏感 #include<bits/stdc++.h&g ...