洛谷 P1239 計數器

2022-04-05 04:33:05 字數 1082 閱讀 5593

一本書的頁數為n,頁碼從1開始編起,請你求出全部頁碼中,用了多少個0,1,2,…,9。其中—個頁碼不含多餘的0,如n=1234時第5頁不是0005,只是5。

輸入格式:

乙個正整數n(n≤10^9),表示總的頁碼。

輸出格式:

共十行:第k行為數字k-1的個數。

輸入樣例#1: 複製

11
輸出樣例#1: 複製

141

1111111

#include#include

#include

#include

using

namespace

std;

intn;

int num[10

];int

main()

}for(int i=0;i<=9;i++)

cout

}

80分的暴力

正解思路:數字dp

f[i][j][k]表示有i位,最高位為j,數字k出現的次數。

#include#include

#include

#include

using

namespace

std;

intn,tot;

int ans[10

];int sum[16],num[10

];int f[11][10][11

];int

main()}}

int x=n;

while(x)

for(int i=1;i)

for(int j=1;j<=9;j++)

for(int k=0;k<=9;k++)

ans[k]+=f[i][j][k];

for(int i=tot;i>=1;i--)

ans[num[i]]+=n%sum[i]+1

; }

for(int i=0;i<=9;i++) printf("

%d\n

",ans[i]);

}

LuoGu P1239計數器 強大的貢獻

p1239 計數器 題意 就是求從1到n間,1 9一共出現的次數 這道題直接暴力是不科學的,因為n有 1e9 然後我就看到了乙個很好的從貢獻思考的方法 洛谷學神的方法 樓下dalao都是數學方法和數字dp,看的本蒟蒻心慌慌 如果對高階方法難以理解的話,這裡提供一種簡單方法,雖然效率比dalao們差很...

洛谷p2602 數字計數

題目描述 給定兩個正整數a和b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次 一開始想歪了,想去列舉每一位,然後統計每一位的情況。轉念一想,數字dp是統計 a,b 內符合條件的數字的個數。換一種方法,對key 0,9 統計含1個key,2個key len len為數字的長度 個...

洛谷 P1144 最短路計數

題目描述 給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入輸出格式 輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每...