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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

count 数字计数(bzoj 1833)

發(fā)布時(shí)間:2024/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 count 数字计数(bzoj 1833) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Description

給定兩個(gè)正整數(shù)a和b,求在[a,b]中的所有整數(shù)中,每個(gè)數(shù)碼(digit)各出現(xiàn)了多少次。

Input

輸入文件中僅包含一行兩個(gè)整數(shù)a、b,含義如上所述。

Output

輸出文件中包含一行10個(gè)整數(shù),分別表示0-9在[a,b]中出現(xiàn)了多少次。

Sample Input

1 99

Sample Output

9 20 20 20 20 20 20 20 20 20

HINT

30%的數(shù)據(jù)中,a<=b<=10^6;
100%的數(shù)據(jù)中,a<=b<=10^12。

/*令f[i]為i位數(shù)(算前導(dǎo)零)中每個(gè)數(shù)出現(xiàn)的次數(shù)(一定是相同的,所以只記錄一個(gè)就行了)有f[i]=f[i-1]*10+10^(i-1) */ #include<cstdio> #include<iostream> #define lon long long using namespace std; lon ans[20],f[20]; void resolve(lon x,lon pos){while(x) ans[x%10]+=pos,x/=10; } void DP(lon x,lon flag){int i,j;lon pos,now;for(i=1,pos=10;pos<x;i++,pos*=10){//“整數(shù)”部分 for(j=0;j<=9;j++)ans[j]+=f[i-1]*9*flag;for(j=1;j<=9;j++)ans[j]+=pos/10*flag;}now=pos/=10;i--;while(now<x){//“小數(shù)”部分 while(now+pos<=x) {lon temp=now/pos;resolve(temp,pos*flag);for(j=0;j<=9;j++)ans[j]+=f[i]*flag;now+=pos;}pos/=10;i--;}} int main(){lon a,b,pos;int i;f[1]=1;for(i=2,pos=10;i<=12;i++,pos*=10)f[i]=f[i-1]*10+pos;cin>>a>>b;DP(b+1,1);DP(a,-1);//差分一下 for(int i=0;i<=9;i++) printf("%lld%c",ans[i],i==9?'\n':' ');return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/harden/p/6286184.html

總結(jié)

以上是生活随笔為你收集整理的count 数字计数(bzoj 1833)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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