美團 CodeM 資格賽 數碼 詳解

2022-09-07 18:39:12 字數 1331 閱讀 1546

time limit: 1 sec  memory limit: 256 mb

description

給定兩個整數 l 和 r,對於任意 x,滿足l≤x≤r ,把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求[1,9]中每個數碼出現的次數。

輸入格式

輸入一行兩個整數 l 和 r。

輸出格式

一共 9 行。

第 i 行,輸出數碼 i出現的次數。

樣例樣例輸入

1 4
樣例輸出

4

2 1

1 0

0 0

0 0

資料範圍與提示

1≤l≤r≤10^9

題目連線:

暴力想 從 只有1位數開始 然後2位 3 位 。。。。列舉到邊界限

對於最高位數字1的來說有 1 10 11 12 … 19 100 101 102 … 199 …. 

假設我們求得區間是 1-k 。這樣的話答案就是 k/1 + k/10 + k/11 + … k/199。 

確實減少了計算量,倒是但列舉到 10000000 的時候就不合適了,再按上述方法列舉次數就太多了。 

這個時候分母變得很大,可以利用這個特性來進行分塊,例如 k/10000000 與 k/10009999 結果可能都一樣(向下取整)。 

我們可以將答案都相同的分為一塊,這樣列舉因子的時候就可以滑動了,從10000000直接滑倒10009999。  

#include#include#define  ll long long

#define min(a,b) a>b?b:a

ll res[11];

void work(ll r,int f)}}

}int main()

}

方法二: 需要一定的思維過程 直接讀**就好咯   下圖為確定區間的長度

美團codeM資格賽 優惠券

優惠券時間限制 1秒 空間限制 32768k 某次抽查時,發現有硬碟故障,歷史日誌中有部分行損壞,這些行的存在是已知的,但是行的內容讀不出來。假設損壞的行可以是任意的優惠券的購買或者使用。現在問這次抽查中業務是否正確。若有錯,輸出最早出現錯誤的那一行,即求出最大s,使得記錄1到s 1滿足要求 若沒有...

CodeM資格賽E 數碼 題解

題意 給定兩個整數 l 和 r 對於所有滿足1 l x r 10 9 的 x 把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求1 9每個數碼出現的次數。思路首先我們只需要能求出從1到x的答案,然後減就好了,對於不超過x 的數,就要在這個的最高位的計數上加x x 並記錄下x...

美團CodeM 資格賽第一題

美團外賣的品牌代言人袋鼠先生最近正在進行 研究。他有兩段音訊,每段音訊是乙個表示音高的序列。現在袋鼠先生想要在第二段音訊中找出與第一段音訊最相近的部分。具體地說,就是在第二段音訊中找到乙個長度和第一段音訊相等且是連續的子串行,使得它們的 difference 最小。兩段等長音訊的 differenc...