(14.10.28改)

本来只想写BZOJ3739:DZY Loves Math VIII的,不过因为和VI有关系,而且也没别人写过VI的题解,那么写下。

不过我还不会插公式……

http://www.lydsy.com/JudgeOnline/problem.php?id=3561

想想还是要把代码放一下的,不然可能一辈子都不会写了= =

为什么那么像FancyCoder写的呢……因为这题本来就是他教我哒……读入优化快速筛甚至快速幂的模板都是他的= =

额Mobius反演系列问题的入门也是看Jcvb大爷blog学的……

= =

简要说下,设F(d,k)为正整数d次幂的前K项和。

然后化成∑(D=1...n)∑(d|D)d^d*μ(D/d)*F(d,n/d)*F(d,m/d)……

发现能预处理出F(d,n/d)和F(d,m/d)就好了……

然后我对杜教多项式求和的课件进行了艰苦卓绝的复习(学习)……当然失败了。

最后看Fancy代码……

暴力!

居然是暴力!

妈蛋……

简要的说……就是裸的不能裸暴力啊泥煤,预处理时间复杂度O(∑(n/d))=O(nlogn)。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define rep(i,j,n) for(i=j;i<=n;i++)
template<class T> inline void read(T&x){char c;for(c=getchar();c<'0'||c>'9';c=getchar());for(x=0;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';};
typedef long long ll;
const int N=500000;
const int mod=1000000007;
ll i,j,k,l,tt,d2,res,ans,d;
int P,Q,n,m;
ll s[N+10],t[N+10];
ll pow(ll a){ll ans=1,b=a;for(a%=mod;b;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;return ans;}
  
bool pd[N+1];int u[N+1],p[N/5+1];
void pre(){
    pd[1]=1;u[1]=1;
    rep(i,2,N){
        if(!pd[i]){p[++p[0]]=i;u[i]=-1;}
        for(int j=1,mul;j<=p[0]&&(mul=i*p[j])<=N;j++){
            pd[mul]=1;
            if(i%p[j]==0){u[mul]=0;break;}
            u[mul]=-u[i];
        }
    }
}
int main()
{
    read(n);read(m);
    if(n>m)swap(n,m);
    pre();
    rep(i,1,m)t[i]=1;
    rep(d,1,n){
    Q=m/d;
        rep(i,1,Q)t[i]=t[i]*i%mod;
        rep(i,1,Q)s[i]=(s[i-1]+t[i])%mod;
        res=0;P=n/d;
        rep(d2,1,P)if(u[d2]){
            tt=t[d2]*t[d2]%mod*s[P/d2]%mod*s[Q/d2]%mod;
            res+=tt*u[d2];
        }
        res%=mod;
        ans=(ans+res*pow(d))%mod;
    }
    printf("%lld\n",ans);
    return 0;
}

[BZOJ3561] DZY Loves Math VI的更多相关文章

  1. BZOJ3561 DZY Loves Math VI 数论 快速幂 莫比乌斯反演

    原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目 ...

  2. BZOJ3561 DZY Loves Math VI 莫比乌斯反演

    传送门 看到\(gcd\)相关先推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^M (lcm(i ...

  3. BZOJ3561 DZY Loves Math VI 【莫比乌斯反演】

    题目 给定正整数n,m.求 输入格式 一行两个整数n,m. 输出格式 一个整数,为答案模1000000007后的值. 输入样例 5 4 输出样例 424 提示 数据规模: 1<=n,m<= ...

  4. 【BZOJ3561】DZY Loves Math VI (数论)

    [BZOJ3561]DZY Loves Math VI (数论) 题面 BZOJ 题解 \[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_ ...

  5. BZOJ 3561 DZY Loves Math VI

    BZOJ 3561 DZY Loves Math VI 求\(\sum_{i=1}^{n}\sum_{j=1}^{m}\text{lcm}(i,j)^{\gcd(i,j)}\),钦定\(n\leq m ...

  6. 【BZOJ 3561】 3561: DZY Loves Math VI (莫比乌斯,均摊log)

    3561: DZY Loves Math VI Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 205  Solved: 141 Description ...

  7. 【bzoj3561】DZY Loves Math VI 莫比乌斯反演

    题目描述 给定正整数n,m.求   输入 一行两个整数n,m. 输出 一个整数,为答案模1000000007后的值. 样例输入 5 4 样例输出 424 题解 莫比乌斯反演 (为了方便,以下公式默认$ ...

  8. 【BZOJ】3561: DZY Loves Math VI

    题意 求\(\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)^{gcd(i, j)}\)(\(n, m<=500000\)) 分析 很显然要死推莫比乌斯 题解 设\ ...

  9. ●BZOJ 3561 DZY Loves Math VI

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3561 题解: 莫比乌斯反演 $$\begin{aligned}ANS&=\sum_{ ...

随机推荐

  1. discuz php判断是手机访问还是电脑访问网站

    首先在模块处填入代码: //手机网页跳转 //如果检测到访问的浏览器为下列一个指定的移动浏览器 则返回true function is_mobile(){ $regex_match="/(n ...

  2. Git之detached HEAD

    今天遇到了和CSDN上博主相同的问题,就是使用git -branch -a 发现自己处于一个零时的分支上.这篇博文写的不错,转载记录一下. 转载:http://blog.csdn.net/lili62 ...

  3. ThreadLocal<T>类

    ThreadLocal<T>类                                        -------每个线程有仅拥有一个T对象                   ...

  4. ural 1090 In the Army Now

    http://acm.timus.ru/problem.aspx?space=1&num=1090 #include <cstdio> #include <cstring&g ...

  5. PCB的阻抗控制

    多层板的结构: 通常我们所说的多层板是由芯板和半固化片互相层叠压合而成的,芯板是一种硬质的.有特定厚度的.两面包铜的板材,是构成印制板的基础材料.而半固化片构成所谓的浸润层,起到粘合芯板的作用,虽然也 ...

  6. 包含无数好东西的ownCloud

    ownCloud 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于Ph ...

  7. 2016.08.13/2/index/_d_Lucene54_0.dvm: Too many open files

    er[file_system_exception: /elk/elasticsearch/data/es_cluster/nodes/0/indices/logstash-zjzc-frontend- ...

  8. vsftpd,tftp安装配置

    一. 对比共同点:都包含ftp不同点:1)vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.你可以通过ftp客户端上传下载软件.可设置访问用户名密码,或匿名anonymous登陆.默认 ...

  9. 【转】android应用开发全程实录-你有多熟悉listview?---不错

    原文网址:http://www.cnblogs.com/noTice520/archive/2011/12/05/2276379.html 今天给大家带来<android应用开发全程实录> ...

  10. 【7】JAVA---地址App小软件(AddrBusiness.class)(逻辑层)

    这个...没多少好解释的... 表现层的增删改查的具体实现类. package cn.hncu.addr.business; import javax.swing.JOptionPane; impor ...