Super Pow--C++ Clean and Short Solution

翻译 2016年08月29日 22:19:34

关于Leetcode中的Super Pow 一题有几种不同的解法,在Leetcode的discuss板块中,我发现了一种很棒的解题思路,顺便翻译一下(加深记忆)。

作者:fentoyal
地址:C++ Clean and Short Solution

翻译如下

同余模定理:ab%k=(a%k)(b%k)%k

由于幂存放在数组中,我们最好将它一位一位的处理。

通过观察可知:(其实为了便于理解可以先将取模的过程去掉,这里保留原式子)
a1234567%k=(a1234560%k)(a7%k)%k=(a123456%k)10%k(a7%k)%k

看起来有点复杂?让我们采取另一种表达方式:
假设f(a,b)表示计算ab%k 然后利用该函数表示上面的公式:
f(a,1234567)=f(a,1234560)f(a,7)%k=f(f(a,123456),10)f(a,7)%k

代码实现如下:

class Solution {
    const int base = 1337;
    int powmod(int a, int k) //a^k mod 1337 where 0 <= k <= 10
    {
        a %= base;
        int result = 1;
        for (int i = 0; i < k; ++i)
            result = (result * a) % base;
        return result;
    }
public:
    int superPow(int a, vector<int>& b) {
        if (b.empty()) return 1;
        int last_digit = b.back();
        b.pop_back();
        return powmod(superPow(a, b), 10) * powmod(a, last_digit) % base;
    }
};

Note: 这种方法显然不是最快的,但是当我们在面试中被问到这个问题时可以很快的理解并写出。还有这个方法没有使用内建的pow函数,我想这也是面试官所期待的。
希望它对你有帮助!

用vs2005要习惯于clean solution and build solution

如果你仅仅是在代码中作了修改并且直接F7编译 ,那么很有可能上一次的一个信息就留到了obj文件中,可能诱发错误,我今天就是遇到了这样的情况,所以最好是clear solution and build ...
  • jiuweifox
  • jiuweifox
  • 2007年05月17日 15:49
  • 647

VS2008 Clean+Build Rebuild 区别

一般来说 Rebuild=99%*(Clean+Build),效果在非常小的可能性下会不同,一般可以忽略 Rebuild是对Solution下的所有项目,逐个进行 Clean+Build。不论文件更改...
  • dongdianjing
  • dongdianjing
  • 2010年08月25日 10:10
  • 3125

2014ACM集训13级PK赛4-K-Nice

Description This is a super simple problem. The description is simple, the solution is simple. If...
  • u012943138
  • u012943138
  • 2014年03月15日 21:25
  • 437

Visual Studio 2010: Build/Rebuild/Clean (01)

前言: 在VS中,Build/Rebuild/Clean 应该说是使用相当频繁的操作。但是,有时候仅仅是无心的点一下,没有仔细研究其工作机理。同时,在很多实际情况中,遇到一部分关于程序集、编译等的问...
  • Hotty_Lee
  • Hotty_Lee
  • 2012年04月28日 02:20
  • 1710

省赛热身赛之 K-Nice

原题: Description     This is a super simple problem. The description is simple, the solution is sim...
  • bingsanchun1
  • bingsanchun1
  • 2013年03月21日 23:49
  • 615

关于对WinCE工程的编译命令使用

刚接触WinCE那会,经常要对BSP包内Drivers文件夹内各驱动、Files文件夹下的配置文件(比如config.bib,platform.reg等)、BSP包内bootloader、WinCE ...
  • jangel_lee
  • jangel_lee
  • 2013年12月03日 08:53
  • 813

关于Visual Studio的Solution文件问题

最近碰到一个麻烦事,关于VS2005的Solution文件问题,其实说大不大,但是比较棘手。 事情的由来是这样的,之前我们有一个Solution,那是针对旧版本的,之后我们升级了现有的系统,所以就有一...
  • broze
  • broze
  • 2010年05月11日 10:03
  • 1932

揭开SAP Solution Manager神秘面纱

在过去10年中,SAP Solution Manager----用以集中支持和系统管理的独特产品。不用说,跨国企业中的典型SAP系统景观一般包括了大量的SAP和非SAP系统。“复杂”的SAP环境(或者...
  • zltpc007
  • zltpc007
  • 2012年02月10日 01:51
  • 12335

Operation System - Peterson's Solution算法 解决多线程冲突

Person's solution 是用来一种基于软件的解决关键区域问题的算法(critical-section). 它并非完美的,有可能不正确地工作。而且是限制解决两个进程同步的问题。 但是它很...
  • kenden23
  • kenden23
  • 2014年05月12日 13:00
  • 2321

VC++/VS重新打开Solution Explorer

使用VS2015时,手误关闭了Solution Explorer,怎么重新打开它呢? View->Solution Explorer 。。...
  • u013600225
  • u013600225
  • 2017年03月01日 20:14
  • 944
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Super Pow--C++ Clean and Short Solution
举报原因:
原因补充:

(最多只允许输入30个字)