2020牛客多校第七場H Dividing

2022-07-14 22:12:16 字數 889 閱讀 9183

正整數二元組 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是相等的,所以可以直接整除分塊,分別計算情況1和情況2的答案即可

但要注意整除分塊的r邊界不要超過k,否則會導致答案錯誤

因為這點wa了好幾發

#include using namespace std;

typedef long long ll;

struct read

template inline read & operator >> (_tp&x)

for(x = 0; isdigit(c11); c11 = read()) x = x * 10 + (c11 ^ '0');

boo && (x = -x);

return *this;

}} in;

const int n = 2e5 + 50;

const ll p = 1e9 + 7;

int main()

for (ll l = 2, r; l <= k; l = r + 1)

r = (n - 1) / x;

r = min(r, k);

ans = (ans + ((r - l + 1) % p) * (((n - 1) / l + 1) % p) % p) % p;

}printf("%lld\n", ans);

return 0;

}//1000000000000 1000000000000

2020牛客多校第七場H

題目鏈結 任何 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對應的答案個數。即...

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 然後查詢的時候,記...