[BZOJ1257][CQOI2007]余数之和sum(数论)

来源:互联网 发布:软件测试职业 编辑:程序博客网 时间:2024/06/01 08:08

题目描述

传送门

题解

i=1nKmodi

=i=1nKKii

=nKi=1nKii

咦有点眼熟
和约数研究那道题有点像,在求和的时候运用一下等差数列的求和公式即可。
我太煞笔了看了半天不懂什么意思,原来那是等差数列的求和公式,还百度一下如何推导。。。

代码

#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define LL long longLL n,k,ans;int main(){    scanf("%lld%lld",&n,&k);    ans=n*k;    if (n>k) n=k;    LL j=0;    for(int i=1;i<=n;i=j+1){        j=min(n,k/(k/i));        ans-=(k/i)*(j-i+1)*(i+j)/2;    }    printf("%lld\n",ans);}
1 0