我一上來就是遍歷著計算,但在面試或者應用中決計是不可行的。。。。
我們換一種思路,乙個數abcdefg,我們計算出各位,十位,百位。。。有多少個1,加一起即可。。。
就23012來說,看百位上它為0,從1---23012中,百
位上有多少個1取決於比它高的所有位決定。。。
100--199,1100--1199,2100--2199.。。。11100--11199,21100--21199,22100--22199.。。。共23*100個。。注意只看百位是否是1,不管其它位,因為其它位也按此方法計算,就不多不少了
就23112來說,看百位上它為1,從1---
23112中,百
位上有多少個1取決於比它高的所有位決定和所有的低位。。
100--199,1100--1199,2100--2199.。。。11100--11199,21100--21199,22100--22199.。。。共23*100個
100-112 共12+1個。。。所以23*100+12+1...
就其它百位大於100--199,1100--1199,2100--2199.。。。11100--11199,21100--21199,22100--22199.23100--23199共23*100個。。。
#include #include using namespace std;
long long n,ilowernum,icurrnum,ihighernum,ans,ifactor;
void solve()
ifactor *= 10;
}}int main()
{ while(cin >> n)
{ans = 0;
solve();
cout << ans <
程式設計之美 1的數目
給定乙個十進位制正整數n,寫下從1開始,到n的所有整數,然後數一下其中出現的所有 1 的個數。解法一 窮舉法,遍歷1到n的每乙個數,計算其出現1的整數的個數 雖然笨,但是想不出其他方法就這樣了 解法二 分類討論,分別討論個位,十位和百位.上1能出現的次數。假設這個數為abcd,則 d 為1時,出現1...
程式設計之美 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...