洛谷 - P2261 - 余数求和
作者:互联网
https://www.luogu.org/problemnew/show/P2261
看了一下题解,取模运算可以换成减法来做。 $a\%b=a-b*\lfloor\frac{a}{b}\rfloor$ ,所以求和式可以化简,然后用数论分块来搞。
#include<bits/stdc++.h> using namespace std; #define ll long long int main() { ll n,k; scanf("%lld%lld",&n,&k); ll ans=n*k; for(ll l=1,r; l<=n; l=r+1) { if(k/l!=0) { r=min(k/(k/l),n); } else { //k/l==0,意味着l>k,所有的后面的下整都是0,分成同一块 r=n; break; } ans-=(k/l)*(r-l+1)*(l+r)/2; } printf("%lld",ans); return 0; }
标签:洛谷,求和,P2261,long,ans,余数,ll,lld 来源: https://www.cnblogs.com/Yinku/p/10538859.html