hdu1005 矩陣快速冪

題目

Number Sequence

Problem Description

A number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).

Input

The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.

Output

For each test case, print the value of f(n) on a single line.

Sample Input

1 1 3

1 2 10

0 0 0

Sample Output

2

5


題目描述

題目的意思是,給出整數(shù)A,B和n暗挑,利用公式

 f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7  (其中齿诉,f(1)=1, f(2) = 1)算出f(n)的值队萤。

題目解法

一開始是用簡單的模擬來做這一題淹朋,結(jié)果提交后是超時;由于給出的n可能很大是會造成超時的原因昏苏。在上網(wǎng)搜索后肴盏,用了矩陣快速冪這種方法,來降低時間抱环。矩陣快速冪是利用矩陣的乘法公式壳快,將遞推式化成下圖的形式,這樣問題就變成了镇草,如何快速求前者矩陣的n-2次冪眶痰。

在求某個數(shù)的n次冪問題中,可以利用數(shù)論中的快速冪技巧梯啤。如果用最直白的方法算a^168竖伯,在程序中則需要做167次的乘法;168=128+16+4因宇,如果將168轉(zhuǎn)成二進(jìn)制的話就是:10010100七婴,

這是,只需算8*3=24次運算即可完成察滑;下圖是快速冪的代碼打厘,主要可以利用base的增長是以二進(jìn)制數(shù)值形式的增長,即是從a贺辰、a^2户盯、a^4、a^8.....這種形式增長下去饲化。這種快速冪的技巧莽鸭,在矩陣中也可以使用。

題目代碼

const int N = 3;

struct Mat{

int mat[N][N];

};

Mat operator * (Mat a, Mat b) {

? Mat c;

? int i, j, k;

? memset(c.mat, 0, sizeof(c.mat));

? for (i = 0; i < 2; i++)

? ? ?for (j = 0; j < 2; j++)

? ? ? ?for (k = 0; k < 2; k++) {

? ? ? ?c.mat[i][j] += a.mat[i][k] * b.mat[k][j];

? ? ? ?c.mat[i][j] %= 7;

? ? ? ?}

? return c;

? }

Mat operator ^ (Mat a, int b) {

? Mat c;

? int i, j;

? for (i = 0; i < 2; i++)

? ? ?for (j = 0; j < 2; j++)

? ? ? ?c.mat[i][j] = (i == j);


? while(b != 0) {

? if (b & 1 != 0)

? ? ? c = c * a;

? ? a = a * a;

? b /= 2;

? }

? return c;

? }

int main() {

int a, b, n;

Mat matrix, result;

while (scanf("%d %d %d", &a, &b, &n) && (a || b || n)) {

if (n == 1 || n == 2) {

printf("1\n");

continue;

}

matrix.mat[0][0] = a % 7; matrix.mat[0][1] = b % 7;

matrix.mat[1][0] = 1;? matrix.mat[1][1] = 0;

result = matrix^(n - 2);

printf("%d\n", (result.mat[0][0] + result.mat[0][1]) % 7);

}

return 0;

}



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吃靠,一起剝皮案震驚了整個濱河市蒋川,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撩笆,老刑警劉巖捺球,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缸浦,死亡現(xiàn)場離奇詭異,居然都是意外死亡氮兵,警方通過查閱死者的電腦和手機(jī)裂逐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泣栈,“玉大人卜高,你說我怎么就攤上這事∧掀” “怎么了掺涛?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疼进。 經(jīng)常有香客問我薪缆,道長,這世上最難降的妖魔是什么伞广? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任拣帽,我火速辦了婚禮,結(jié)果婚禮上嚼锄,老公的妹妹穿的比我還像新娘减拭。我一直安慰自己,他們只是感情好区丑,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布拧粪。 她就那樣靜靜地躺著,像睡著了一般沧侥。 火紅的嫁衣襯著肌膚如雪可霎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天正什,我揣著相機(jī)與錄音啥纸,去河邊找鬼号杏。 笑死婴氮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盾致。 我是一名探鬼主播主经,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼庭惜!你這毒婦竟也來了罩驻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤护赊,失蹤者是張志新(化名)和其女友劉穎惠遏,沒想到半個月后砾跃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡节吮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年抽高,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片透绩。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡翘骂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帚豪,到底是詐尸還是另有隱情碳竟,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布狸臣,位于F島的核電站莹桅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏固棚。R本人自食惡果不足惜统翩,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望此洲。 院中可真熱鬧厂汗,春花似錦、人聲如沸呜师。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汁汗。三九已至衷畦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間知牌,已是汗流浹背祈争。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留角寸,地道東北人菩混。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像扁藕,于是被迫代替她去往敵國和親沮峡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,345評論 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,031評論 0 2
  • 專業(yè)考題類型管理運行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,997評論 0 13
  • var navigator = navigator || {};var window = window || {}...
    DF_Sky閱讀 1,251評論 0 0
  • 夢境亿柑, 在遙遠(yuǎn)的身旁邢疙, 那里只有看不見的時空, 無數(shù)條時間軸已將生命打亂。 它因此顯得疟游, 狹窄而空曠呼畸。 你聽, 寂...
    二維螞蟻閱讀 217評論 0 1