码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj3561

时间:2017-04-19 00:27:57      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:limit   print   put   技术   jpg   its   href   ems   ret   

3561: DZY Loves Math VI

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 240  Solved: 163
[Submit][Status][Discuss]

Description

给定正整数n,m。求
 技术分享
 

Input

一行两个整数n,m。

Output

一个整数,为答案模1000000007后的值。

Sample Input

5 4

Sample Output

424

HINT

 

数据规模:

1<=n,m<=500000,共有3组数据。

 

Source

By Jcvb

挖坑

技术分享
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1000010, mod = 1000000007;
int n, m;
ll ans;
ll mu[N], a[N], sum[N];
int p[N], mark[N];
ll power(ll x, ll t)
{
    ll ret = 1;
    for(; t; t >>= 1, x = x * x % mod) if(t & 1) ret = ret * x % mod;
    return ret;
}
void Init()
{
    mu[1] = 1;
    for(int i = 2; i <= 1000000; ++i) 
    {
        if(!mark[i])
        {
            p[++p[0]] = i;
            mu[i] = -1;
        }
        for(int j = 1; j <= p[0] && p[j] * i <= 1000000; ++j) 
        {
            mark[i * p[j]] = 1;
            if(i % p[j] == 0)
            {
                mu[i * p[j]] = 0;
                break;
            }
            mu[i * p[j]] = -mu[i];
        }
    }
}
int main()
{
    Init();
    scanf("%d%d", &n, &m);
    if(n > m) swap(n, m);
    for(int i = 1; i <= m; ++i) a[i] = 1;
    for(int d = 1; d <= n; ++d)
    {
        ll delta = 0;
        for(int p = 1; p * d <= m; ++p) 
        {
            a[p] = a[p] * (ll)p % mod;
            sum[p] = (sum[p - 1] + a[p]) % mod;
        }
        for(int p = 1; p * d <= n; ++p) if(mu[p])
            delta = (delta + mu[p] * a[p] % mod * a[p] % mod * sum[n / d / p] % mod * sum[m / d / p] % mod) % mod;        
        ans = (ans + delta * power(d, d) % mod) % mod;
    }
    printf("%lld\n", ans);
    return 0;
}
View Code

 

[Submit][Status][Discuss]

bzoj3561

标签:limit   print   put   技术   jpg   its   href   ems   ret   

原文地址:http://www.cnblogs.com/19992147orz/p/6731243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!