HDU 3271 SNIBB (數字統計 二分)

2021-09-30 14:58:32 字數 771 閱讀 3958

by---cxlove

題目:將乙個數轉化成b進製後,他的val表示的是各位上的數字和。詳見題目描述。。。。

首先還是預處理,dp[i][j]表示轉化成b進製後,長度為i的數中,數字和為j的數字有多少個,感覺越來越像數字dp。。。

對於詢問1:壓根就是數字dp,從高位開始列舉,記錄之前已經出現的位數和,然後列舉當前位。注意區間的開閉問題,邊界處理好

對於詢問2:首先通過詢問1得出的數目,判斷是否存在第k大,然後就是二分答案,判斷[l,mid]中和為m的數有多少個。

#include#include#include#include#include#include#define n 30

#define inf 1<<29

#define mod 2007

#define ll long long

using namespace std;

int dp[32][305];

//轉換成b進製後,長度為i的數中各位和為j的個數

void init(int b,int m)

//本身的和就是m,注意別落下

if(tot==m) sum++;

return sum;

}int main()

scanf("%d",&k);

if(k>cnt)

int low=x,high=y,mid;

while(lowprintf("%d\n",low);

}return 0;

}

HDU 3271 SNIBB 數字DP 二分

比較裸的數字dp,需要注意的就是二分時一定要寫成 mid long long l long long r 1 不然會溢位導致超時的,被這個坑了好一會兒。還有就是題目並沒有說y一定大於x,所以需要判斷一下。include include include include include include ...

HDU 2017 統計數字字元出現的個數

problem description 對於給定的乙個字串,統計其中數字字元出現的次數。input 輸入資料有多行,第一行是乙個整數n,表示測試例項的個數,後面跟著n行,每行包括乙個由字母和數字組成的字串。output 對於每個測試例項,輸出該串中數值的個數,每個輸出佔一行。sample input...

HDU 4588 二進位制的加法進製統計

題意 給兩個數a b,問二進位制情況下從a一直加1 直到b需要進多少位。輸入 1 2 1 31 4 1 6 輸出 023 6 分析 二進位制只是由1和0組成,二進位制下的各數都有規律可循。9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ...