zoukankan      html  css  js  c++  java
  • [CQOI2007]余数求和

    嘟嘟嘟


    学完数论分块,觉得这题不难啊。(难道是我变强了?


    推式子就行。

    [egin{align*} G(n, k) &= sum_{i = 1} ^ {n} k mod i \ &= sum_{i = 1} ^ {n} k - left lfloor frac{k}{i} ight floor * i \ &= n * k - sum_{i = 1} ^ {n} left lfloor frac{k}{i} ight floor * i end{align*}]

    然后发现后面的(sum_{i = 1} ^ {n} left lfloor frac{k}{i} ight floor * i)可以用数论分块来做。
    不过需要注意的是(n,k)大小关系不一定,所以块的右端点应该是(min(n, frac{k}{ left lfloor frac{k}{l} ight floor}))
    以及循环终止条件为(l leqslant min(n, k))
    然后块内等差数列求和即可。

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    #include<cstdlib>
    #include<cctype>
    #include<vector>
    #include<stack>
    #include<queue>
    using namespace std;
    #define enter puts("") 
    #define space putchar(' ')
    #define Mem(a, x) memset(a, x, sizeof(a))
    #define rg register
    typedef long long ll;
    typedef double db;
    const int INF = 0x3f3f3f3f;
    const db eps = 1e-8;
    //const int maxn = ;
    inline ll read()
    {
      ll ans = 0;
      char ch = getchar(), last = ' ';
      while(!isdigit(ch)) last = ch, ch = getchar();
      while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
      if(last == '-') ans = -ans;
      return ans;
    }
    inline void write(ll x)
    {
      if(x < 0) x = -x, putchar('-');
      if(x >= 10) write(x / 10);
      putchar(x % 10 + '0');
    }
    
    ll n, k, ans = 0;
    
    int main()
    {
      n = read(); k = read();
      ans = n * k;
      for(ll l = 1, r; l <= min(n, k); l = r + 1)
        {
          r = min(n, k / (k / l));
          ans -= (k / l) * (r - l + 1) * (l + r) / 2;
        }
      write(ans), enter;
      return 0;
    }
    
  • 相关阅读:
    手持设备开发项目实例二(盘点扫描系统)
    通过Netty通信,采集设备现场GPS数据,并存放在redis服务器。
    自动立体车库控制应用系统
    Miscorsoft AnalysisServices 开发
    日志分析常用命令
    MVC中 @ResponseBody、@RequestMapping
    spring与redis集成之aop整合方案
    工业控制系统之葡萄酒保温发酵控制系统
    JS闭包分享
    架构之美—数据库架构
  • 原文地址:https://www.cnblogs.com/mrclr/p/10107317.html
Copyright © 2011-2022 走看看