給定乙個十進位制正整數n,寫下從1開始,到n的所有整數,然後數一下其中出現的所有」1「的個數。
解法一:窮舉法,遍歷1到n的每乙個數,計算其出現1的整數的個數;雖然笨,但是想不出其他方法就這樣了;
解法二:分類討論,分別討論個位,十位和百位...上1能出現的次數。
假設這個數為abcd,則:
d 為1時,出現1的資料的個數有abc個;
c為1時,出現1的資料的個數有abd個;
b為1時,出現1的資料的個數有acd個;
a為1時,出現1的資料的個數有bcd個;
當然具體還要看當前位置是0或是1,稍微調整。
上**:
[cpp]view plain
copy
print?
#include
using
namespace std;
unsigned long sumls(unsigned long n);
int main()
unsigned long sumls(unsigned long n)
ifactor+=10;
} return icount;
}
程式設計之美 1的數目
我一上來就是遍歷著計算,但在面試或者應用中決計是不可行的。我們換一種思路,乙個數abcdefg,我們計算出各位,十位,百位。有多少個1,加一起即可。就23012來說,看百位上它為0,從1 23012中,百 位上有多少個1取決於比它高的所有位決定。100 199,1100 1199,2100 2199...
程式設計之美 1的數目
問題1描述 求1 n十進位制中1的數目f,f 12 5 include typedef long long ll ll sum1s ll n ifactor 10 return icount int main 2 求滿足f n n的最大數 找規律 9以下 1個 99以下 20個 999以下 300個...
程式設計之美 1的數目
今天白天繼續打醬油,損人品。回來只好分享一下自己寫的 彌補rp。程式設計之美2 4,題目原意是給出乙個數n,求出1到n這n個數字中1的個數,和boj 北郵超科技大廈 那題相似。很無聊很td的說。書本上的做法不太易懂,就自己寫個了,暫時沒有發現有bug。1 include iostream 2usin...