久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2

    1. <dfn id="yitbn"><samp id="yitbn"><progress id="yitbn"></progress></samp></dfn>

          <div id="yitbn"></div>

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

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

            來源:考試吧 2015-01-20 9:09:45 考試吧:中國教育培訓第一門戶 模擬考場
            考試吧整理“2015年軟件水平考試程序員精選題(13)”供考生參考,更多軟件水平考試資訊和備考資料請關注考試吧軟件水平考試網(wǎng)。

              查看匯總:2015軟件水平考試程序員精選題匯總

              在從1到n的正數(shù)中1出現(xiàn)的次數(shù)

              題目:輸入一個整數(shù)n,求從1到n這n個整數(shù)的十進制表示中1出現(xiàn)的次數(shù)。

              例如輸入12,從1到12這些整數(shù)中包含1 的數(shù)字有1,10,11和12,1一共出現(xiàn)了5次。

              分析:這是一道廣為流傳的google面試題。用最直觀的方法求解并不是很難,但遺憾的是效率不是很高;而要得出一個效率較高的算法,需要比較強的分析能力,并不是件很容易的事情。當然,google的面試題中簡單的也沒有幾道。

              首先我們來看最直觀的方法,分別求得1到n中每個整數(shù)中1出現(xiàn)的次數(shù)。而求一個整數(shù)的十進制表示中1出現(xiàn)的次數(shù),就和本面試題系列的第22題很相像了。我們每次判斷整數(shù)的個位數(shù)字是不是1。如果這個數(shù)字大于10,除以10之后再判斷個位數(shù)字是不是1;谶@個思路,不難寫出如下的代碼:

              int NumberOf1(unsigned int n);

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

              // Find the number of 1 in the integers between 1 and n

              // Input: n - an integer

              // Output: the number of 1 in the integers between 1 and n

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

              int NumberOf1BeforeBetween1AndN_Solution1(unsigned int n)

              {

              int number = 0;

              // Find the number of 1 in each integer between 1 and n

              for(unsigned int i = 1; i <= n; ++ i)

              number += NumberOf1(i);

              return number;

              }

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

              // Find the number of 1 in an integer with radix 10

              // Input: n - an integer

              // Output: the number of 1 in n with radix

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

              int NumberOf1(unsigned int n)

              {

              int number = 0;

              while(n)

              {

              if(n % 10 == 1)

              number ++;

              n = n / 10;

              }

              return number;

              }

              這個思路有一個非常明顯的缺點就是每個數(shù)字都要計算1在該數(shù)字中出現(xiàn)的次數(shù),因此時間復雜度是O(n)。當輸入的n非常大的時候,需要大量的計算,運算效率很低。我們試著找出一些規(guī)律,來避免不必要的計算。

              我們用一個稍微大一點的數(shù)字21345作為例子來分析。我們把從1到21345的所有數(shù)字分成兩段,即1-1235和1346-21345。

              先來看1346-21345中1出現(xiàn)的次數(shù)。1的出現(xiàn)分為兩種情況:一種情況是1出現(xiàn)在最高位(萬位)。從1到21345的數(shù)字中,1出現(xiàn)在10000-19999這10000個數(shù)字的萬位中,一共出現(xiàn)了10000(104)次;另外一種情況是1出現(xiàn)在除了最高位之外的其他位中。例子中1346-21345,這20000個數(shù)字中后面四位中1出現(xiàn)的次數(shù)是2000次(2*103,其中2的第一位的數(shù)值,103是因為數(shù)字的后四位數(shù)字其中一位為1,其余的三位數(shù)字可以在0到9這10個數(shù)字任意選擇,由排列組合可以得出總次數(shù)是2*103)。

              至于從1到1345的所有數(shù)字中1出現(xiàn)的次數(shù),我們就可以用遞歸地求得了。這也是我們?yōu)槭裁匆?-21345分為1-1235和1346-21345兩段的原因。因為把21345的最高位去掉就得到1345,便于我們采用遞歸的思路。

              分析到這里還有一種特殊情況需要注意:前面我們舉例子是最高位是一個比1大的數(shù)字,此時最高位1出現(xiàn)的次數(shù)104(對五位數(shù)而言)。但如果最高位是1呢?比如輸入12345,從10000到12345這些數(shù)字中,1在萬位出現(xiàn)的次數(shù)就不是104次,而是2346次了,也就是除去最高位數(shù)字之后剩下的數(shù)字再加上1。

              基于前面的分析,我們可以寫出以下的代碼。在參考代碼中,為了編程方便,我把數(shù)字轉換成字符串了。

              #include "string.h"

              #include "stdlib.h"

              int NumberOf1(const char* strN);

              int PowerBase10(unsigned int n);

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

              // Find the number of 1 in an integer with radix 10

              // Input: n - an integer

              // Output: the number of 1 in n with radix

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

              int NumberOf1BeforeBetween1AndN_Solution2(int n)

              {

              if(n <= 0)

              return 0;

              // convert the integer into a string

              char strN[50];

              sprintf(strN, "%d", n);

              return NumberOf1(strN);

              }

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

              相關推薦:

              2015年軟考信息技術處理員考前知識點總結匯總

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

              2015軟件水平考試《程序員》知識點總結匯總

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