bzoj 1257 餘數之和sum 數學

2021-07-10 13:11:39 字數 763 閱讀 1008

time limit: 5 sec  

memory limit: 162 mb

submit: 3081  

solved: 1425 [

submit][

status][

discuss]

給出正整數n和k,計算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的餘數。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7

輸入僅一行,包含兩個整數n, k。

輸出僅一行,即j(n, k)。

5 37

50%的資料滿足:1<=n, k<=1000 100%的資料滿足:1<=n ,k<=10^9

真是一道數學題啊,要計算k%i的值,我們可以轉換一步,mod=k-k/i*i,因為k,i都是整數的原因,所以肯定會出現k/i=k/j=...這個時候我們可以列舉每乙個商,進而得到i--j這個區間,在這個區間的等差數列,利用公式不斷求解

k/n我們可以得到最小的商i,也就可以求出比最小的商大一的數k/(i+1)(得到的商肯定是乙個等差數列),可以列兩個數列找一下規律,1--n是總共的長度,但是在這全部的長度中,有著一段一段的數字對應的商是一樣,我們要做的就是找到乙個個的區間

#include#include#include#includeusing namespace std;

int main()

cout<

bzoj 1257 餘數之和sum 數論

給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的餘數。sum n k i sum n k lfloor k i rfloor i n k sum n lfloor k i rfloor i lfloor k i r...

BZOJ 1257餘數之和

給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值 其中k mod i表示k除以i的餘數。例如j 5,3 3 mod 1 3 mod 2 3 mod 3 3 mod 4 3 mod 5 0 1 0 3 3 7 輸入僅一行,包含兩個整數n,k。1 n ...

BZOJ 1257 餘數之和 整除優化

給定正整數n和k,計算 k mod 1 k mod 2 k mod n 的值。1 n,k 1e9 首先我們可以先將式子進行轉換,kmo di k i k i 原式 n k i 1n i k i k mod i k i lfloor k i rfloor 原式 n k sum limits i lfl...