今天看了《入門經典》上的一道題,打算來存個統計位數的模板,一般都是用數字dp來做,但統計單個數字可以特殊處理。
題目:對1~n統計1的個數。
題目簡單,分析可以看:
舉個例子:
對於乙個數abcde,取百位上的c來計算,
假若c是"1",那麼百位上1的個數是由他的高位和低位來決定的。等於ab*100+cde+1;
假若c是"0",那麼百位上1的個數是ab*100;
假如c是大於1,那麼 百位上1的個數是(ab+1)*100
然後就上**了:
1 #include2view code#define ll long long 34
ll n,count;56
ll sum_1(ll n)
727 factor*=10;//
位數公升高 28}
29return
count;30}
3132
intmain()
3338
return0;
39 }
不懂得盡情問啊~~
-end-
計算1的個數 程式設計之美
給定乙個十進位制正數n,寫下從1開始到nde所有正整數,然後數一數其中出現所有 1 的個數。n 2 只有乙個1 n 12 只有五個1,1 10,11,12。分析 一,從1開始遍歷到n,將中每乙個書中含有1的個數加起來。方法如下 static int countoneinint int n retur...
程式設計之美2 4 求1的個數
推薦 從1到n的所有數中,1出現的次數 例如 f 2 1,因為就有乙個1,f 13 6,有1,10,11,12,13,1一共出現6次 include include using namespace std void fun int n ifactor 10 cout 2 擴充套件問題 同之前問題1的...
程式設計之美系列之三 計算1的個數
給定乙個十進位制整數n,求出從1到n的所有整數中出現 1 的個數。例如 n 2,1,2出現了1個 1 n 12,1,2,3,4,5,6,7,8,9,10,11,12。出現了5個 1 問題求解 解法一 最直接的方法就是從1開始遍歷到n,將其中每乙個數中含有 1 的個數加起來,就得到了問題的解。如下 1...