zoukankan      html  css  js  c++  java
  • 【洛谷】P2261 [CQOI2007]余数求和

    题面??

    点我获得题面QAQ

    我这个咕儿终于在csp初赛前夕开始学习数论了!

    我是绝对不会承认之前不学数学是因为去年刚开始学OI的时候就跟yyq他们学莫比乌斯反演然后自闭的

    分析

      对于k mod i,可以表示为$k-(k/i)*i$

      所以答案就为

      $$sum_{i=1}^n k-(k/i)i$$

    $$=nk-sum_{i=1}^n (k/i)i$$

      $sum_{i=1}^n (k/i)i$这个东西可以用整除分块优化加上高斯求和搞(说得很高级似的

      剩下的就很容易了

      哇卡卡卡我总算学会用数学公式了

      Code

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    long long ans,n,k,l,r;
    int main()
    {
        scanf("%lld%lld",&n,&k);
        while(r<=n)
        {
            l=r+1;if(k/l==0)break;r=k/(k/l);
            ans+=1ll*(l+min(n,r))*(min(r,n)-l+1)*(k/l)/2;
        }
        printf("%lld
    ",n*k-ans);
    }

     

  • 相关阅读:
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    团队作业—个人记录
    4.21
    4.20
    4.19
    4.18
  • 原文地址:https://www.cnblogs.com/firecrazy/p/11700361.html
Copyright © 2011-2022 走看看