• luogu P2261 [CQOI2007]余数求和 (数论分块)


    这题要推一下式子,注意涉及到取模的式子都要尽量展成减去下取整的形式。

    注意,这里求和符号是求到n,因此分块里面 l 的范围就是l<=n,然后对于n大于k的情况需要特判一下。

     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 typedef long long LL;
     4 LL n,k;
     5 int main(){
     6     LL i,j;
     7     LL l,r,ans=0ll;
     8     scanf("%lld%lld",&n,&k);
     9     ans=n*k;
    10     for (l=1;l<=n;l=r+1){
    11         if (k/l!=0) r=min(n,(k/(k/l)));
    12         else r=n;
    13         ans-=(k/l)*(r-l+1)*(r+l)/2;
    14     }
    15     printf("%lld",ans);
    16     return 0;
    17 }
  • 相关阅读:
    CF1208C
    CF1208B
    CF1208A
    CF1206A
    wqy的C题
    wqy的B题
    [POI2005]SAM-Toy Cars
    Gym
    操作系统学习---进程
    C++多线程(POSIX)
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/16527070.html
Copyright © 2020-2023  润新知