求root(N, k) 快速冪取模的應(yīng)用

原文地址:https://blog.qjm253.cn/?p=371

問題描述

N<k時哨苛,root(N,k) = N,否則汁掠,root(N,k) = root(N',k)唠摹。N'為N的k進(jìn)制表示的各位數(shù)字之和。輸入x,y,k炎疆,輸出root(x^y,k)的值 (這里^為乘方卡骂,不是異或),2=<k<=16形入,0<x,y<2000000000偿警,有一半的測試點里 x^y 會溢出int的范圍(>=2000000000)

輸入描述

每組測試數(shù)據(jù)包括一行,x(0<x<2000000000), y(0<y<2000000000), k(2<=k<=16)

輸出描述

輸入可能有多組數(shù)據(jù)唯笙,對于每一組數(shù)據(jù)螟蒸,root(x^y, k)的值

示例

  • 輸入
    4 4 10
    
  • 輸出
    4
    

分析推導(dǎo)

  1. 首先將 N用k進(jìn)制表示 展開:

N = a0 + a1 * k + a2 * k2 + ··· + a0 * kn

  1. 則盒使,N' 表示如下:

N' = a0 + a1 + a2 + ··· + an

  1. N - N' 表示如下:

N - N' = a1 * (k - 1) + a2 * (k2 - 1) + ··· + an * (kn - 1)

  1. 證明 (N - N') % (k - 1) = 0

由等比數(shù)列求和公式有: 1 + k + k2 + ··· + kn - 1 = (1 - kn) / (1 - k)

kn - 1 = (k - 1) * (1 + k + k2 + ··· + kn - 1)

(kn - 1) % (k - 1) = 0

又∵ N - N' = a1 * (k - 1) + a2 * (k2 - 1) + ··· + an * (kn - 1)

(N - N') % (k - 1) = 0

  1. 遞推歸納

令 N' = N1, N" = N2, ···

則有:

????(N - N1) % (k - 1) = 0

????(N1 - N2) % (k - 1) = 0

????...

????(Nr - 1 - Nr) % (k - 1) = 0

????其中 Nr 為我們要求的結(jié)果

將上面的各個遞推公式相加得到:

????(N - Nr) % (k - 1) = 0

Nr = N % (k - 1)

  1. 得出結(jié)論

root(N, k) = N % (k - 1)

快速冪取模算法

點我查看

算法實現(xiàn)

此算法實現(xiàn)基于上面數(shù)學(xué)推得到的結(jié)論,以及快速冪取模算法

#include <iostream>

using namespace std;

long root(long x, long y, int k){
    long ans = 1;
    k -= 1;
    x %= k;
    while(y != 0){
        if(y & 1)
           ans = (ans * x) % k;
        y >>= 1;
        x = (x * x) %k;
    }
    return ans == 0 ? k : ans;
}

int main(){
    long x, y;
    int k;

    while(cin >> x >> y >> k)
        cout << root(x, y, k);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末七嫌,一起剝皮案震驚了整個濱河市少办,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诵原,老刑警劉巖英妓,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绍赛,居然都是意外死亡蔓纠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門吗蚌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腿倚,“玉大人,你說我怎么就攤上這事蚯妇》罅牵” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵箩言,是天一觀的道長硬贯。 經(jīng)常有香客問我,道長陨收,這世上最難降的妖魔是什么饭豹? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮务漩,結(jié)果婚禮上墨状,老公的妹妹穿的比我還像新娘。我一直安慰自己菲饼,他們只是感情好肾砂,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宏悦,像睡著了一般镐确。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饼煞,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天源葫,我揣著相機與錄音,去河邊找鬼砖瞧。 笑死息堂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荣堰,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼床未,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了振坚?” 一聲冷哼從身側(cè)響起薇搁,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渡八,沒想到半個月后啃洋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡屎鳍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年宏娄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逮壁。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡孵坚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出貌踏,到底是詐尸還是另有隱情十饥,我是刑警寧澤窟勃,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布祖乳,位于F島的核電站,受9級特大地震影響秉氧,放射性物質(zhì)發(fā)生泄漏眷昆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一汁咏、第九天 我趴在偏房一處隱蔽的房頂上張望亚斋。 院中可真熱鬧,春花似錦攘滩、人聲如沸帅刊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赖瞒。三九已至,卻和暖如春蚤假,著一層夾襖步出監(jiān)牢的瞬間栏饮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工磷仰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留袍嬉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像伺通,于是被迫代替她去往敵國和親箍土。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容

  • thiele插值算法 1點插值算法 function [C,c]=thiele(X,Y,Z)%X為插值點橫坐標(biāo)泵殴,Y...
    00crazy00閱讀 1,996評論 0 4
  • 一涮帘、實驗?zāi)康?學(xué)習(xí)使用 weka 中的常用分類器,完成數(shù)據(jù)分類任務(wù)笑诅。 二调缨、實驗內(nèi)容 了解 weka 中 explo...
    yigoh閱讀 8,559評論 5 4
  • 針對互聯(lián)網(wǎng)對整個經(jīng)濟帶來的變革,中央財經(jīng)大學(xué)副校長李俊生認(rèn)為吆你,技術(shù)發(fā)展和大眾普及使得中國近幾年開始真正進(jìn)入互聯(lián)網(wǎng)時...
    a1a6cc547682閱讀 230評論 0 0
  • 我見過許多老師的燦爛的笑容弦叶,但我對初中時的政治老師徐祥云徐老師的笑容卻難以忘懷。 在上初一的時候我的政治課一直不上...
    陸學(xué)峰閱讀 609評論 9 8
  • 閑暇時總愛探索妇多,總愛想象伤哺!
    狐貍也寒冷閱讀 190評論 2 4