日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十进制中正整数N中1的个数(2)

發(fā)布時間:2025/4/16 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十进制中正整数N中1的个数(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上面的那種各個數(shù)據(jù)進行遍歷的方法,耗時,

我們可以通過根據(jù)數(shù)的規(guī)律進行觀察是否存在某種規(guī)律:

當N是1位數(shù)的情況:

? ? ? ? 如果N=3,那么從1到3的所有數(shù)字總,1,2,3,只有你個位數(shù)字的出現(xiàn)的個數(shù)是1,

? ? ? ?當N=9時,出現(xiàn)1的個數(shù)也是1個。

當N是兩位數(shù)的時候:

? ? ? ?當是兩位數(shù)的時候,個位和十位上都可能出現(xiàn)1,我們分開考慮,

? ? ? ?當N=33時,所有數(shù)中個位出現(xiàn)1的個數(shù)是4,在十位上出現(xiàn)1的個數(shù)是10,總數(shù)是14

? ? ?當N=55式,個位數(shù)上出現(xiàn)1的個數(shù)是6,十位上出現(xiàn)1的個數(shù)是10,總數(shù)是16

?

? ? ?sum(19)=個位出現(xiàn)的個數(shù)+十位出現(xiàn)的個數(shù)=2+10=12

? ? ?sum(29)=個位出現(xiàn)的個數(shù)+十位出現(xiàn)的個數(shù)=3+10=13

? ? ?sum(39)=個位出現(xiàn)的個數(shù)+十位出現(xiàn)的個數(shù)=4+10=14

? 。。。。。。。。。。。。。。

? ???sum(99)=個位出現(xiàn)的個數(shù)+十位出現(xiàn)的個數(shù)=10+10=20

當N是三位數(shù)的時候:

分別統(tǒng)計百位、十位‘個位上1的個數(shù)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?9以下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1個

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 99以下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1*10+10*1=20個

? ? ? ? ? ? ? ? ? ? ? ? ? ?999以下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?100*1+10*20=300個

? ? ? ? ? ? ? ? ? ? ? 9999以下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1*1000+10*30=4000個

? ? ? ? ? ? ? ?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

? ? ? ? ? ? 9999999999以下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?9000000個

? ? ? ?999999999999以下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?100000000個

當n增加10,至少增加1個1

當n增加100,至少增加20個1

當n增加1000,至少增加300個1

當n增加10^k,時,至少增加k*10^k-1個1

代碼:

int coutinter(int n) {int count = 0;int ifactor = 1;int islower = 0;int icurrnum = 0;int ihigh = 0;while (n / ifactor != 0){islower = n - (n / ifactor)*ifactor;icurrnum = (n / ifactor) % 10;ihigh = n / (ifactor * 10);switch (icurrnum){case 0:count += ihigh*ifactor;break;case 1:count += ihigh*ifactor + islower + 1;break;default:count += (ihigh + 1)*ifactor;break;}ifactor *= 10;} }


總結

以上是生活随笔為你收集整理的十进制中正整数N中1的个数(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。