昨天在杭電poj上看到乙個道題。題目總結出來就是,給定乙個正整數n,求出從1到n(包含n)之間49出現的個數。
舉例:如n=101
則1到101之間101個數中,49出現一次。同時,409,4009(這樣的數字不合法)。看到第一眼就想起來程式設計之美2.4有一道求「1」的個數的題目,這道題其實就是把「1」換成了49。
我第一眼想到的是用49進製,不過仔細考慮一下之後是不合適的。然後想了乙個小時左右沒想出來。雖然說就是變了個形,不過無奈本人智商不夠,所以到了晚上睡覺前也暫時沒有好的思路。
然而早晨一覺醒來,刷牙時腦海裡忽然浮現出了解體思路。說到這裡,真是覺得人應該多睡覺。高二有次數列求和的題,也是午睡的時候忽然想起了解題思路。
具體思路就是,每次處理兩位。第一次處理個位十位,第二次處理十位百位,依此類推。處理之後再分類討論:
我們用三個變數
highnum lowernum currentnum
分別表示當前位的高位數字,低位數字和當前位數字
然後就是乙個分類討論
if(currnetnum>
49) ...
......
if(current==
49) ...
......
.if(current<
49) ...
......
..
至於為什麼分類討論,地球人都知道,看了程式設計之美2.4的人也會知道。
至於**實現,我貼乙個自己的。歡迎來拍磚,如果你用iphone6s拍我,我更開心。
#include
#include
#include
using
namespace
std;
int calc(int num)
highnum=num/(factor*10);
if(index<2)
factor*=10;
index++;
if(index>2)
}cout
<<"count: "
}int main(int argc,char **argv)
程式設計之美 4 9數獨知多少
問題 一共有多少種不同的數獨解答呢?其中有多少種是獨立的解答呢?如果用乙個字串來表示各種數獨,如何保證一一對應的基礎上,讓字串的長度最短?分析 首先要明確問題,獨立的解答到底是什麼?如何定義 獨立 這種關係?如果任意交換數獨的兩個數字,仍然是乙個合法的數獨。那麼我們可以定義 如果兩個數獨解答可以通過...
計算1的個數 程式設計之美
給定乙個十進位制正數n,寫下從1開始到nde所有正整數,然後數一數其中出現所有 1 的個數。n 2 只有乙個1 n 12 只有五個1,1 10,11,12。分析 一,從1開始遍歷到n,將中每乙個書中含有1的個數加起來。方法如下 static int countoneinint int n retur...
《程式設計之美》統計1的個數
今天看了 入門經典 上的一道題,打算來存個統計位數的模板,一般都是用數字dp來做,但統計單個數字可以特殊處理。題目 對1 n統計1的個數。題目簡單,分析可以看 舉個例子 對於乙個數abcde,取百位上的c來計算,假若c是 1 那麼百位上1的個數是由他的高位和低位來決定的。等於ab 100 cde 1...