51Nod 1225 - 餘數之和(整除分塊)
【題目描述】
【思路】
整除分塊+等差數列
設
p=⌊ik⌋,k mod i=k−pi 如果有
⌊i+1k⌋=p,k mod (i+1)=k−p(i+1)=k−pi−p=k mod i−p 說明只要
k 除以
i 的整數部分相同,那麼
k mod i 就會形成一個等差數列,用一次求和公式即可
#include<bits/stdc++.h>
using namespace std;
const long long mod=1000000007;
int main(){
long long n,ans=0,inv2=(mod+1)/2;
scanf("%lld",&n);
for(long long L=1,R;L<=n;L=R+1){
R=n/(n/L);
ans=(ans+(R-L+1)%mod*((n%L+n%R)%mod)%mod*inv2%mod)%mod;
}
printf("%lld\n",ans);
return 0;
}
相關推薦
51Nod 1225 - 餘數之和(整除分塊)
【題目描述】 【思路】 整除分塊+等差數列 設 p = ⌊
51nod-1225 餘數之和(分割槽間處理)
基準時間限制:1 秒 空間限制:131072 KB 分值: 80 難度:5級演算法題 F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n)。其中%表示Mod,也就是餘數。 例如F(6) = 6 % 1 + 6 % 2
牛客網練習賽25A—因數個數和(整除分塊)
題目描述 q次詢問,每次給一個x,問1到x的因數個數的和。 輸入描述: 第一行一個正整數q ; 接下來q行,每行一個正整數 x 輸出描述: 共q行,每行一個正整數表示答案 題意: 給你一個n,求1的因子數+2的因子數+3的因子數+......+n的因子數。
杜教篩(整除分塊,積性函式,尤拉與莫比烏斯,狄利克雷卷積)
參考資料 整除分塊: 當我們求∑ni=1f([ni])∑i=1nf([ni])的時候,如果1到n求一遍感覺太傻了,因為會有很多重複的計算,例如:n=10000時,i在[101,111]時,都有[ni]=9[ni]=9,所以我們只需要對所有數分成如上的一個
bzoj 1257餘數之和sum 除法分塊
Description給出正整數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)
bzoj5037 線段樹練習4加強版(暴力分塊)
log del string 技術分享 iostream || getc code click 求大爺教線段樹怎麽寫啊QAQ 只會寫分塊...一開始腦抽寫成了O(NKlogN)還被CZL大爺嘲諷了一發T T f[i][j]表示在第i塊中,模k為j的數有幾個,
【bzoj4765】普通計算姬(雙重分塊)
efi ref space include pos gif signed problem 。。 題目傳送門:http://www.lydsy.com/JudgeOnline/problem.php?id=4765 這道題已經攢了半年多了。。。因為懶,一直沒去寫。。
【洛谷3396】雜湊衝突(大力分塊)
點此看題面 大致題意:給你一個長度為nn的陣列valval以及mm個操作,操作有兩種:一種是將valxvalx修改為yy,另一種操作是求出∑vali(i∑vali(i%x=y)x=y)。 樸素的暴力 我們先
jzoj5936 【NOIP2018模擬10.29】逛公園 (性質+分塊)
Description 策策同學特別喜歡逛公園,公園可以看做有n個景點的序列,每個景點會給策策帶來di 的愉悅度,策策初始有x0 的愉悅度,然而愉悅度也是有上限的,他在每個景點的愉悅度上限為li ,策策想要從 l 到 r這一段景點中選擇一段景點參觀(從這一段的左
【洛谷5113】Sabbat of the witch(毒瘤分塊)
點此看題面 大致題意: 給你一個序列,要你支援三種操作:區間賦值,區間求和,撤回之前任一區間賦值操作。 分塊 這道題應該是一道十分毒瘤的分塊題。 這道題要用到的演算法並不是很難,但是思維難度是真的高。 大致思路就是對於每一個塊維護一大堆資訊,各用一個棧儲存對每個塊的賦值操作,並開一個鄰接表來儲存
[JZOJ4438] K小數查詢(經典分塊)
Description 給你N個數組成的序列,需要支援兩種操作 1 L R x 將L到R加上x 2 L R k 求L到R第k小的數 Solution 分塊大法好! 我們將序列分成N−−√塊,每塊中維護原來的順序的值,以及將該塊所有值
整除分塊學習筆記+[CQOI2007]余數求和(洛谷P2261,BZOJ1257)
CQ 找到 SQ 等等 HP alt target new n) 上模板題例題: [CQOI2007]余數求和 洛谷 BZOJ 題目大意:求 $\sum^n_{i=1}k\ mod\ i$ 的值。 等等……這題就學了三天C++的都會吧? $1\leq n,k\leq 10^
bzoj 1257 : [CQOI2007]餘數之和 (數學+分塊)
Description 給出正整數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 +
(數論優化分塊)P2261 [CQOI2007]餘數求和
https://www.luogu.org/problemnew/show/P2261 給出正整數n和k,計算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的餘數。例如G(10, 5)=5 mod 1 +
洛谷P2261 [CQOI2007]餘數求和(整除分塊)+一點學習筆記
題目背景 數學題,無背景 題目描述 給出正整數n和k,計算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的餘數。例如G(10, 5)=5 mod 1 + 5 mod 2 + 5 mod 3 + 5 m
【bzoj2724】蒲公英(分塊)
sort 大小 int gin algorithm read oid n) 快速合並 題目分析 付費題哈哈。題意就是求區間眾數,由於區間眾數無法快速合並,所以不能使用傳統的數據結構如線段樹等。 這時分塊就能派上很大的用場。將序列分成$\sqrt{n}+$塊,每塊大小$\
HDU 6053 TrickGCD(分塊)
%d space 復雜 cstring 前綴 == str 結果 logs 【題目鏈接】 http://acm.hdu.edu.cn/showproblem.php?pid=6053 【題目大意】 給出一個數列每個位置可以取到的最大值, 問這個
計蒜客16492 building(二分線段樹/分塊)
sin cst include sqrt ++ building scanf mat math 題解: 考慮用線段樹維護樓的最大值,然後這個問題就很簡單了。 每次可以向左二分出比x高的第一個樓a,同理也可以向右二分出另一個樓b,如果a,b都存在,答案就是b-a-1。 註意到
[BZOJ1257][CQOI2007]余數之和sum 數學+分塊
clu 取值 lld logs can family print 一個 line 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=1257 題目所求為$$Ans=\sum_{i=1}^nk%i$$ 將其簡單變形一
Topcoder SRM 675 Div1 500Pts LimitedMemorySeries1(分塊)
tor bits fin get pre n) ted 多少 top 題意 給定一個長度不超過$5*10^{6}$的數列和不超過$100$個詢問,每次詢問這個數列第$k$小的數,返回所有詢問的和 內存限制很小,小到不能存下這個數列。(數列以種子的形式給出)