一道普及組題目

2022-05-02 03:51:08 字數 1094 閱讀 5377

給你兩個整數 \(n,m\),求 \((\sum\limits_^m n\space\text\space i)\mod (10^9+7)\)。

\(n,m\le 10^\)

小學生都猜得出來是整除分塊裸題

然後發現對於整除分塊的每一塊,它們除 \(n\) 後下取整的值都相同,所以它們除 \(n\) 的餘數是乙個等差數列,公差就是它們除 \(n\) 後下取整的值的相反數

顯然小學生都會等差數列求和,所以整除分塊套個等差數列求和公式就做完了

注意特殊處理 最後一塊殘缺(即 \(m\) 在某個塊中間) 以及 \(n\gt m\) 的情況。

考後發現爆成 \(70\) 分了

然後我就暴躁地找了一下問題,發現我取模是這麼寫的(只取了一行為例)

ans = (ans + 1ll * (n%i+n%j) % mod * (j-i+1) % mod * invmod % mod) % mod;
顯然我注意到了乘數都高達 \(1e13\),所以從第乙個乘數開始就取模。

但是我忘了給後面的乘數取模了……於是 \(1e9\times 1e13\) 就爆 long long 了……

zbl

#include#define ll long long

#define mod 1000000007

#define invmod 500000004

using namespace std;

inline ll read()

ll n,m,ans;

int main()

if(i<=to) ans = (ans + 1ll * (n%i+n%m) % mod * ((m-i+1)%mod) % mod * invmod % mod) % mod;

if(m>n) ans = (ans + 1ll * n % mod * ((m-n)%mod) % mod) % mod;

cout當然這題還有小學組方法,但我剛上幼兒園並沒想到

一道this的題目

請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...

一道題目 intel

從序列中找四個四字子串形成十進位制數使之乘積最大 就是求四個最大的?我目前只想到如下辦法。這個題並不是關於複雜的演算法,其本意是要利用並行處理,但目前尚未考慮到 除了其中比較求最小值部分有希望用simd include int g teststring int main void int picke...

一道題目 移位

csdn上一道面試題 十進位制整數,計算對應的二進位制數包含多少個1,用位操作。int n 95625 int m 1 int num 0 for int i 0 i sizeof int 8 i cout num endl 讓1不斷移位去判斷與其對應位置是否為1 若是有符號整數 負數 原碼的補碼 ...