• 51Nod 1225 余数之和


    求 n % 1 + n %2 + n % 3 .....n % n 。结果取余1e9 + 7

    n <= 1e12

    显然是用到了整除分块。

    这里的for循环可以当作模板

        for (ll l = 1, r; l <= n; l = r + 1) {
            if (n / l != 0) r = min(n / (n / i), n);
            else r = n;
            // do something
        }

    当然,此题还要注意取模

    #pragma warning(disable:4996)
    
    #include<iostream>
    #include<algorithm>
    #include<bitset>
    #include<tuple>
    #include<unordered_map>
    #include<fstream>
    #include<iomanip>
    #include<string>
    #include<cmath>
    #include<cstring>
    #include<vector>
    #include<map>
    #include<set>
    #include<list>
    #include<queue>
    #include<stack>
    #include<sstream>
    #include<cstdio>
    #include<ctime>
    #include<cstdlib>
    #define INF 0x3f3f3f3f
    #define inf 0x7FFFFFFF
    #define moD 1000000003
    #define pii pair<int,string>
    #define eps 1e-8
    #define equals(a,b) (fabs(a-b)<eps)
    #define bug puts("bug")
    #define re  register
    #define fi first
    #define se second
    const int maxn = 1e6 + 5;
    const double Inf = 10000.0;
    const double PI = acos(-1.0);
    typedef  long long ll;
    typedef unsigned long long ull;
    using namespace std;
    
    const ll MOD = 1e9 + 7;
    ll inv = 5e8 + 4;
    
    int main() {
        ll n;
        scanf("%lld", &n);
        ll res = (n % MOD) * (n % MOD) % MOD;
        ll ans = 0;
        for (ll l = 1, r; l <= n; l = r + 1) {
            if (n / l != 0) r = min(n / (n / l), n);
            else r = n;
            ans += ((n / l) % MOD) * ((((l + r) % MOD) * ((r - l + 1) % MOD) % MOD) * inv % MOD);
            ans %= MOD;
        }
        printf("%lld", ((res - ans + MOD) % MOD + MOD) % MOD);
    }
  • 相关阅读:
    mysql各个版本下载地址
    hadoop-0.20.2完全分布式集群
    04_Spring中使用Quartz
    03_CronTrigger
    02_SimpleTrigger
    02_ActiveMQ入门
    01_JMS概述
    01_Quartz基础结构
    Java开发高性能网站需要关注的事
    06_Jedis完成MySQL的条件查询案例
  • 原文地址:https://www.cnblogs.com/hznumqf/p/13370381.html
Copyright © 2020-2023  润新知