AcWing 338 計數問題(數字統計dp)

2021-10-05 18:03:59 字數 1419 閱讀 7274

acwing 338. 計數問題

給定兩個整數 a 和 b,求 a 和 b 之間的所有數字中0~9的出現次數。

例如,a=1024,b=1032,則 a 和 b 之間共有9個數如下:

1024 1025 1026 1027 1028 1029 1030 1031 1032

其中『0』出現10次,『1』出現10次,『2』出現7次,『3』出現3次等等…

輸入格式

輸入包含多組測試資料。

每組測試資料佔一行,包含兩個整數 a 和 b。

當讀入一行為0 0時,表示輸入終止,且該行不作處理。

輸出格式

每組資料輸出乙個結果,每個結果佔一行。

每個結果包含十個用空格隔開的數字,第乙個數字表示『0』出現的次數,第二個數字表示『1』出現的次數,以此類推。

資料範圍

0using namespace std;

int a,b;

// 類似與字首和的思想,用count(n,i)來表示在1到n之中數字i出現的次數

// 用count(b,i)-count(a-1,i) 來求解a到b之間i出現的次數

// 對於任意乙個數我們

// 用dj表示第j位數

// 用l表示j之前的數

// 用r表示j後面的數

// 用p表示從0到j共多少個數

// 例如7位數abcdefg,當j=4時

// dj=d l=abc r=efg p=1000

// 我們用*** i jjj來表示在1到n之間的數

// res表示方案數,則有以下4種情況

// 1 i=0 l!=0

// 1.1 1<=***<=l-1

// res=(l-1)*p

// 1.2 ***=l

// 1.2.1 idi res=0

// 2 i!=0 l=0

// 同1.2

// 3 i!=0 l!=0

// 3.1 000<=***<=l-1 res=l*p

// 3.2 ***=l

// 同1.2

// 4 i=0 l=0

// 不存在

int div(int n)

return res;

}int count(int n,int i)

return res;

}int main()

return 0;

}

AcWing 338 計數問題

acwing 338.計數問題 給定兩個整數 a 和 b,求 a 和 b 之間的所有數字中0 9的出現次數。例如,a 1024,b 1032,則 a 和 b 之間共有9個數如下 1024 1025 1026 1027 1028 1029 1030 1031 1032 其中 0 出現10次,1 出現1...

ACWing 338 計數問題

給定兩個正整數a aa和b bb,求 a,b a,b a,b 之間所有數字中0 9 0 sim 9 0 9出現的次數。前導0 00不許出現。輸入格式 輸入包含多組測試資料。每組測試資料佔一行,包含兩個整數a aa和b bb。當讀入一行為0 0時,表示輸入終止,且該行不作處理。輸出格式 每組資料輸出乙...

計數問題(數字dp)

給定兩個整數 a 和 b,求 a 和 b 之間的所有數字中0 9的出現次數。例如,a 1024,b 1032,則 a 和 b 之間共有9個數如下 1024 1025 1026 1027 1028 1029 1030 1031 1032 其中 0 出現10次,1 出現10次,2 出現7次,3 出現3次...