咕咕最近在學習初等數論,並且對下取整函式產生了極大的興趣。下取整函式是指乙個函式,自變數為 乙個實數,因變數為乙個整數,這個整數恰好是小於或等於自變數的最大的整數,通常記做 ⌊x⌋。例如, ⌊2.5⌋ = 2,⌊2⌋ = 2,⌊−2.5⌋ = −3。
咕咕發現,給定乙個 a,並不是所有的自然數 n 都存在乙個正整數 i 使得 ⌊n/i⌋ = a。那麼,如果給定 l,r,咕咕好奇在區間 [l,r] 中有多少個正整數能使這個等式有正整數解 i 呢?
那麼,聰明的你,你能告訴咕咕嗎?
第一行有乙個整數 t(1 ≤ t ≤ 106),表示資料組數。接下來有 t 行,每行有三個數 a,l,r(1 ≤ a ≤ 1018,1 ≤ l ≤ r ≤ 1018),表示一組詢問。
輸出 t 行,對每組詢問,輸出乙個整數表示答案。
4
5 7 10
7 39 42
1000 1000 1000
27 100 1000
121
617
資料範圍
當 n = 39,a = 7 時,能找到 i = 5 使得 ⌊39 /5 ⌋ = 7。
這道題打表找規律,發現每一行的開頭是a*當前的行數,不過值得注意的是,在最後的每一行,前面的數字會跟上一行的後面的數字重複,就比如說上圖中的第8行的63和第9行的63,這個時候的思路就是記錄第8行的這個63,在計算第9行的數字的時候就忽略這個63。
不過在推倒的過程中,我發現,從1到n的過程中,是不會出現重複的數字的,在第a+1行,也沒有重複的數字,而且這一行的數字的個數是a+1,但是在第a+2行,就出現了重複的數字,並且隨著行數的增加,重複數字的數量也在遞增(d=1)。
那麼我們就可以把圖形分為兩部分,1-a行和a+1行以及它後面的行,這兩部分分別標記為①和②。
不過這裡還有乙個地方需要注意:如果說我們現在給出乙個數40,那麼它所對應的行數就應該是5,如果我們直接取餘的話,結果就會多1,所以我們要先進行乙個判斷(是否比這一行最右邊的那個數字大)。
#include#include#include#define ll long long
using namespace std;
ll findd(ll x,ll a)
else//這裡是②
}int main()
return 0;
}
2019省賽總結
不想說話,一切都是實力不夠,一切都是遺憾。繼開題連續卡了兩個題之後真的是才回歸正常狀態,而且我們竟然不知道我們已經卡了乙個半小時了,乙個除2模2的題竟然想到了快速冪啥的,扯的有點多,最後理清思路直接寫就行。所以說真正出題就中間那兩小時左右,這時候已經晚了。真是不該在那道題上花費那麼多時間。還有一道題...
CCPC2023年河南省賽 咕咕的計數題 II
咕咕最近在學習初等數論,並且對下取整函式產生了極大的興趣。下取整函式是指乙個函式,自變數為 乙個實數,因變數為乙個整數,這個整數恰好是小於或等於自變數的最大的整數,通常記做 x 例如,2.5 2,2 2,2.5 3。咕咕發現,給定乙個 a,並不是所有的自然數 n 都存在乙個正整數 i 使得 n i ...
2019浙江省賽
題意 n個點的二叉樹 無向邊 的單向邊,構造一條到達且只到達每個點一次的路徑。題解 兩次dfs。第一次dfs為向i 1優先,2i次之。然而,發現某些點有兩條出路,這是由於該點在最底層 有些點沒有達到,這是因為這些點在最後一層或倒數第二層的右下角 第二次dfs時先判斷該點的右子節點是否達到過,如果沒到...