BZOJ 2956 模积和 公式推导

=ij((n mod i)(m mod j))ij(nnii)(mmjj)i(nnii)(mmii)

%%% http://blog.csdn.net/acdreamers/article/details/8809517

#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
ll read() {
    ll s = 0, f = 1; char ch = getchar();
    for (; ch < '0' || ch > '9'; ch = getchar()) if (ch == '-') f = -1;
    for (; '0' <= ch && ch <= '9'; ch = getchar()) s = s * 10 + ch - '0';
    return s * f;
}
const ll mod = 19940417;
ll n, m, ans;
ll sum(ll n) {
    return n * (n + 1) % mod * (2 * n + 1) % mod * 3323403 % mod;
}

ll solve(ll m, ll n) {
    ll ans = 0, i, p;
    for (i = 1; i <= m; i = p + 1) {
        p = min(m, n / (n / i));
        (ans += (n / i) * (i + p) % mod * (p - i + 1) % mod * 9970209 % mod) %= mod; 
    }
    return ans;
}

int main() {
    ll n = read(), m = read(), i, ans, p;
    if (n < m) swap(n, m);
    ans = (n * n - solve(n, n)) % mod * ((m * m - solve(m, m)) % mod);
    (ans += -m * m % mod * n % mod + solve(m, n) * m % mod + solve(m, m) * n % mod) %= mod;
    for (i = 1; i <= m; i = p + 1) {
        p = min(m, min(n / (n / i), m / (m / i)));
        (ans += -(n / i) * (m / i) % mod * ((sum(p) - sum(i - 1)) % mod) % mod) %= mod;
    }
    printf("%lld\n", (ans % mod + mod) % mod);

    return 0;
}

2956: 模积和

Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 1000 Solved: 430

Description

((n mod i)(m mod j))

其中 1in,1jm,ij
  

Input

第一行两个数n,m。

Output

  一个整数表示答案mod 19940417的值

Sample Input

3 4

Sample Output

1

样例说明

  答案为(3 mod 1)(4 mod 2)+(3 mod 1) (4 mod 3)+(3 mod 1) * (4 mod 4) + (3 mod 2) * (4 mod 1) + (3 mod 2) * (4 mod 3) + (3 mod 2) * (4 mod 4) + (3 mod 3) * (4 mod 1) + (3 mod 3) * (4 mod 2) + (3 mod 3) * (4 mod 4) = 1

数据规模和约定

  对于100%的数据n,m<=10^9。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值