UPC11449 餘數求和(分塊)

2021-09-24 10:48:28 字數 898 閱讀 9819

時間限制: 1 sec  記憶體限制: 128 mb

提交: 91  解決: 48

[提交] [狀態] [命題人:admin]

題目描述

給出正整數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,k≤109)。

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

複製樣例資料

5 3

樣例輸出
7

提高

對於給定正整數i和n滿足$ i \leq n$,使得$\lfloor \frac \rfloor = \lfloor \frac \rfloor$成立的最大的x為$\frac \rfloor}$

$k \% i =k- \lfloor \frac \rfloor \times i$ ,利用分塊及等差數列求和公式快速求解

#include "

bits/stdc++.h

"using

namespace

std;

typedef

long

long

ll;int

main()

cout

<< ans

}

posted @

2019-04-10 19:37

albert_liu 閱讀(

...)

編輯收藏

求餘數(同餘定理)

現在給你乙個自然數n,它的位數小於等於一百萬,現在你要做的就是求出這個數除10003之後的餘數 輸入第一行有乙個整數m 1 m 8 表示有m組測試資料 隨後m行每行有乙個自然數n。輸出輸出n整除10003之後的餘數,每次輸出佔一行。樣例輸入34 5465456541 樣例輸出45 如下 同餘定理 a...

大整數的求餘數

現在給你乙個自然數n,它的位數小於等於一百萬,現在你要做的就是求出這個數除10003之後的餘數 輸入 第一行有乙個整數m 1 m 8 表示有m組測試資料 隨後m行每行有乙個自然數n。輸出 輸出n整除10003之後的餘數,每次輸出佔一行。include include include include ...

求餘數(同餘定理)

現在給你乙個自然數n,它的位數小於等於一百萬,現在你要做的就是求出這個數除10003之後的餘數 輸入第一行有乙個整數m 1 m 8 表示有m組測試資料 隨後m行每行有乙個自然數n。輸出輸出n整除10003之後的餘數,每次輸出佔一行。樣例輸入34 5465456541 樣例輸出45 如下 同餘定理 a...