首頁(yè) - 網(wǎng)校 - 萬(wàn)題庫(kù) - 直播 - 雄鷹網(wǎng)校 - 團(tuán)購(gòu) - 書城 - ? - 學(xué)習(xí)通 - 導(dǎo)航 -
首頁(yè)網(wǎng)校萬(wàn)題庫(kù)直播雄鷹網(wǎng)校團(tuán)購(gòu)書城模考論壇實(shí)用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語(yǔ)
零起點(diǎn)日語(yǔ)
職稱英語(yǔ)
口譯筆譯
申碩英語(yǔ)
零起點(diǎn)韓語(yǔ)
商務(wù)英語(yǔ)
日語(yǔ)等級(jí)
GMAT考試
公共英語(yǔ)
職稱日語(yǔ)
新概念英語(yǔ)
專四專八
博思考試
零起點(diǎn)英語(yǔ)
托福考試
托業(yè)考試
零起點(diǎn)法語(yǔ)
雅思考試
成人英語(yǔ)三級(jí)
零起點(diǎn)德語(yǔ)
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問(wèn)
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營(yíng)養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國(guó)際商務(wù)
心理咨詢
營(yíng) 銷 師
司法考試
國(guó)際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問(wèn)
ACCA考試
初級(jí)會(huì)計(jì)職稱
資產(chǎn)評(píng)估師
高級(jí)經(jīng)濟(jì)師
注冊(cè)會(huì)計(jì)師
高級(jí)會(huì)計(jì)師
美國(guó)注冊(cè)會(huì)計(jì)師
審計(jì)師考試
國(guó)際內(nèi)審師
注冊(cè)稅務(wù)師
理財(cái)規(guī)劃師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊(cè)測(cè)繪師
質(zhì)量工程師
巖土工程師
注冊(cè)給排水
造價(jià)員考試
注冊(cè)計(jì)量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
寶寶起名
繽紛校園
實(shí)用文檔
入黨申請(qǐng)
英語(yǔ)學(xué)習(xí)
思想?yún)R報(bào)
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員 > 正文

2015年軟件水平考試程序員精選題(6)

考試吧整理“2015年軟件水平考試程序員精選題(6)”供考生參考,更多軟件水平考試資訊和備考資料請(qǐng)關(guān)注考試吧軟件水平考試網(wǎng)。

  現(xiàn)在的問(wèn)題轉(zhuǎn)換為求矩陣{1, 1, 1, 0}的乘方。如果簡(jiǎn)單第從0開始循環(huán),n次方將需要n次運(yùn)算,并不比前面的方法要快。但我們可以考慮乘方的如下性質(zhì):

  / an/2*an/2 n為偶數(shù)時(shí)

  an=

  \ a(n-1)/2*a(n-1)/2 n為奇數(shù)時(shí)

  要求得n次方,我們先求得n/2次方,再把n/2的結(jié)果平方一下。如果把求n次方的問(wèn)題看成一個(gè)大問(wèn)題,把求n/2看成一個(gè)較小的問(wèn)題。這種把大問(wèn)題分解成一個(gè)或多個(gè)小問(wèn)題的思路我們稱之為分治法。這樣求n次方就只需要logn次運(yùn)算了。

  實(shí)現(xiàn)這種方式時(shí),首先需要定義一個(gè)2×2的矩陣,并且定義好矩陣的乘法以及乘方運(yùn)算。當(dāng)這些運(yùn)算定義好了之后,剩下的事情就變得非常簡(jiǎn)單。完整的實(shí)現(xiàn)代碼如下所示。

  #include

  ///////////////////////////////////////////////////////////////////////

  // A 2 by 2 matrix

  ///////////////////////////////////////////////////////////////////////

  struct Matrix2By2

  {

  Matrix2By2

  (

  long long m00 = 0,

  long long m01 = 0,

  long long m10 = 0,

  long long m11 = 0

  )

  :m_00(m00), m_01(m01), m_10(m10), m_11(m11)

  {

  }

  long long m_00;

  long long m_01;

  long long m_10;

  long long m_11;

  };

  ///////////////////////////////////////////////////////////////////////

  // Multiply two matrices

  // Input: matrix1 - the first matrix

  // matrix2 - the second matrix

  //Output: the production of two matrices

  ///////////////////////////////////////////////////////////////////////

  Matrix2By2 MatrixMultiply

  (

  const Matrix2By2& matrix1,

  const Matrix2By2& matrix2

  )

  {

  return Matrix2By2(

  matrix1.m_00 * matrix2.m_00 + matrix1.m_01 * matrix2.m_10,

  matrix1.m_00 * matrix2.m_01 + matrix1.m_01 * matrix2.m_11,

  matrix1.m_10 * matrix2.m_00 + matrix1.m_11 * matrix2.m_10,

  matrix1.m_10 * matrix2.m_01 + matrix1.m_11 * matrix2.m_11);

  }

  ///////////////////////////////////////////////////////////////////////

  // The nth power of matrix

  // 1 1

  // 1 0

  ///////////////////////////////////////////////////////////////////////

  Matrix2By2 MatrixPower(unsigned int n)

  {

  assert(n > 0);

  Matrix2By2 matrix;

  if(n == 1)

  {

  matrix = Matrix2By2(1, 1, 1, 0);

  }

  else if(n % 2 == 0)

  {

  matrix = MatrixPower(n / 2);

  matrix = MatrixMultiply(matrix, matrix);

  }

  else if(n % 2 == 1)

  {

  matrix = MatrixPower((n - 1) / 2);

  matrix = MatrixMultiply(matrix, matrix);

  matrix = MatrixMultiply(matrix, Matrix2By2(1, 1, 1, 0));

  }

  return matrix;

  }

  ///////////////////////////////////////////////////////////////////////

  // Calculate the nth item of Fibonacci Series using devide and conquer

  ///////////////////////////////////////////////////////////////////////

  long long Fibonacci_Solution3(unsigned int n)

  {

  int result[2] = {0, 1};

  if(n < 2)

  return result[n];

  Matrix2By2 PowerNMinus2 = MatrixPower(n - 1);

  return PowerNMinus2.m_00;

  }

上一頁(yè)  1 2 3 4 

  相關(guān)推薦:

  2015年軟考信息技術(shù)處理員考前知識(shí)點(diǎn)總結(jié)匯總

  2015年軟件水平考試《程序員》提高練習(xí)題匯總

  2015軟件水平考試《程序員》知識(shí)點(diǎn)總結(jié)匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
Copyright © 2004- 考試吧軟件水平考試網(wǎng) All Rights Reserved 
中國(guó)科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧