CCPC2023年河南省賽 咕咕的計數題 II

2021-09-18 07:37:41 字數 993 閱讀 5168

咕咕最近在學習初等數論,並且對下取整函式產生了極大的興趣。下取整函式是指乙個函式,自變數為 乙個實數,因變數為乙個整數,這個整數恰好是小於或等於自變數的最大的整數,通常記做 ⌊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。

找出區間[l,r]的中數字除以乙個整數向下取整得到整數a的數字個數。

暴力找規律發現當數字大於等於a*a時的所有數字都符合條件,直接加上,而a*a前的數字每個小區間中符合的個數即為n/a,且從1到n中符合個數為乙個等差數列。求[l,r]區間結果,用[1,r]區間結果減去[1,l-1]結果得到。注意當數字不足乙個區間的個數不在等差數列中等差數列向前推乙個小區間,另外再加上。

#include#includelong long t,a,l,r;

long long num(long long n)

d=n/a;

if(n>=d*(a+1)-1)

ans+=(1+d)*d/2;

else

return ans;

}int main()

return 0;

}

CCPC2019河南省賽 最大下降矩陣

這道題目是求最長上公升序列的變形題,在求最長上公升序列的時候,我們定義dp陣列來儲存每個位置上對應的符合條件的狀態量,遍歷,當前面有小於自身的數的時候,dp就更新和自身以及小於自身數 1取最大值,這裡對應的思想就是,如果前面出現了比某個數大的數,這個數就可以加到前面數字後面,構成新長度的序列.這道題...

CCPC2019河南省省賽總結 lwh

之前的邀請賽突然變成省賽。多了次拿牌的機會,還挺開心的,然後曠了2節課和隊友去打了網路賽,成績還不錯,應該能夠拿個金,然後就是現場賽了,不知道什麼原因,現場賽開始前推遲了20分鐘,比賽開始。開始一眼望過去,學長選了題,簽到題直接敲,樣例過了直接交,ac,本來以為能搶個一血的 雖然開始不知道一血獎勵5...

最大下降矩陣 河南省賽ccpc

題目描述 我們稱乙個矩陣是下降矩陣,當且僅當,矩陣的每一列都是嚴格下降的。很顯然,這個要求很苛刻,大多數矩陣都無法滿足。但是顯然如果消去一些行,一定可以使得這個矩陣變成下降矩陣。現在給出乙個n行m列的矩陣,請你求出最少消去多少行,可以使得這個矩陣變為下降矩陣。輸入輸入第一行包含兩個正整數n,m分別表...