題目鏈結
任何(1,k)是有效答案。
如果(n,k)是有效答案,那麼(n+k,k)和(n*k,k)都是有效答案。
給出t組,n和k(範圍1~1e12),求出(n,k)在n<=n,k<=k範圍內的有效個數。
在k不變的情況下,n的取值範圍只可能是k的倍數,或者k的倍數+1,可以o(1)算出當前k對應的答案個數。即 1 + n / k + n - 1 / k
因為n = 1 或者 k = 1的時候比較特殊,可以把這兩種情況單獨算到答案中。
n = 1 或 k = 1時的答案 n + k - 1
所以在n取2到n,k取2到k的時候的答案sum(n / k + n - 1 / k),k取2到k。
用到了數論分塊的知識
隊裡數論抓瞎,沒見過板子,三個小時硬是沒寫出來。
模板
#include
using
namespace std;
const
long
long mod =
1e9+7;
long
long ans;
void
find
(long
long n,
long
long k)
}int
main()
2020牛客多校第七場H Dividing
正整數二元組 legend tuple n,k 是這樣定義的 統計有多少個 legend tuple n,k 滿足 1 n n,1 k k,其中 n 和 k 是不超過 10 12 的整數 可以很容易發現答案即為n k 0,或者 n 1 k 0的對數 對於一部分k,n k是相等的,所以可以直接整除分塊...
2020牛客暑假多校第七場補題
題目大意是說對於一棵樹,初始所有點的權值 f x f x f x 為0,有三種操作 對於結點 x xx,給定乙個值 w ww,然後對於樹上所有結點 y yy,權值加上 w d ist x,y w dist x,y w dist x,y 包括本身 對於結點 x,f x min x,0 x,f x mi...
牛客多校第七場E Find the median
題意 每次在乙個空區間內加入 l,r 區間內所有的數,然後問每次加入後的中位數是什麼。題解 一道線段樹的題目。a 線段樹的葉子節點維護了乙個區間,這個區間是 l,r 1 為什麼是這區間?因為這樣能不重不漏的包含所有的區間,每次查詢的時候也不會漏掉,自己畫一顆線段樹基本能明白了 b 然後查詢的時候,記...