zoukankan      html  css  js  c++  java
  • sss

    <更新提示>

    <第一次更新>


    <正文>

    余数之和

    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 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7

    Input Format

    输入仅一行,包含两个整数n, k。

    1<=n ,k<=10^9

    Output Format

    输出仅一行,即j(n, k)。

    Sample Input

    5 3
    

    Sample Output

    7
    

    解析

    注意到(k\% i=k-lfloor frac{k}{i} floor*i),故$$sum_{i=1}^n k%i=nk-sum_{i=1}^nlfloor frac{k}{i} floori$$

    那么问题即求(sum_{i=1}^nlfloor frac{k}{i} floor*i)

    引理:对于(iin left [x, left lfloor frac{k}{ lfloor frac{k}x{} floor } ight floor ight ])(lfloor frac{k}{i} floor)的值都相等,其证明如下:

    (f(x)= left lfloor frac{k}{ lfloor frac{k}{x} floor } ight floor),显然有(f(x)geq left lfloor frac{k}{ ( frac{k}{x} ) } ight floor=x),则可得(left lfloor frac{k}{f(x)} ight floorleq left lfloor frac{k}{x} ight floor)

    从另一方面考虑,则有(left lfloor frac{k}{f(x)} ight floorgeqleft lfloor frac{k}{ frac{k}{left lfloor k/x ight floor } } ight floor=lfloor frac{k}{x} floor),则可得(left lfloor frac{k}{f(x)} ight floor=left lfloor frac{k}{x} ight floor)

    这样,每一次累加(left [x, left lfloor frac{k}{ lfloor frac{k}x{} floor } ight floor ight ])所对应的值即可,可以证明这样的段不超过(2sqrt k)个,我们称这种优化算法为整除分块

    (Code:)

     #include<bits/stdc++.h>
    using namespace std;
    long long n,k,ans;
    inline void input(void)
    {
    	scanf("%lld%lld",&n,&k);
    }
    inline void solve(void)
    {
    	ans=n*k;
    	for (long long l=1,r;l<=n;l=r+1)
    	{
    		r = k/l ? min(k/(k/l),n) : n;
    		ans -= (k/l)*(l+r)*(r-l+1)/2; 
    	}
    }
    int main(void)
    {
    	input();
    	solve();
    	printf("%lld
    ",ans); 
    	return 0;
    }
    

    <后记>

  • 相关阅读:
    896. Monotonic Array单调数组
    865. Smallest Subtree with all the Deepest Nodes 有最深节点的最小子树
    489. Robot Room Cleaner扫地机器人
    JavaFX
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
  • 原文地址:https://www.cnblogs.com/Parsnip/p/10741375.html
Copyright © 2011-2022 走看看