BZOJ挂了。。。

先把程序放上来,如果A了在写题解吧。

 #include<cstdio>
#include<algorithm>
#define N 5000010
#define ll long long
#define mod (int)(1e9+7)
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline int ksm(ll x,ll y)
{
ll p=;
while(y)
{
if(y&)p=p*x%mod;
x=x*x%mod;y>>=;
}
return p;
}
int prime[N],tot,f[N],p[N],k;
bool vis[N];
void pre(int t)
{
f[]=;
for(int i=;i<=t;i++)
{
if(!vis[i])
{
prime[++tot]=i;
p[tot]=ksm(i,k);
f[i]=p[tot]-;
}
for(int j=;j<=tot&&i*prime[j]<=t;j++)
{
vis[i*prime[j]]=;
if(!(i%prime[j]))
{
f[i*prime[j]]=(ll)f[i]*p[j]%mod;
break;
}
f[i*prime[j]]=(ll)f[i]*f[prime[j]]%mod;
}
}
for(int i=;i<=t;i++)
f[i]=(f[i]+f[i-])%mod;
}
int n[],m[],t,maxn;
int main()
{
t=read();k=read();
for(int i=;i<=t;i++)
{
n[i]=read();
m[i]=read();
if(n[i]>m[i])swap(n[i],m[i]);
maxn=max(maxn,n[i]);
}
pre(maxn);
for(int z=;z<=t;z++)
{
int ans=;
for(int i=,j;i<=n[z];i=j+)
{
j=min(n[z]/(n[z]/i),m[z]/(m[z]/i));
ans=(ans+((ll)(f[j]+mod-f[i-])*(n[z]/i)%mod*(m[z]/i)%mod))%mod;
}
printf("%d\n",ans);
}
}

update:

$\sum\limits_{i=1}^n\sum\limits_{j=1}^n\gcd(i,j)^k$
$=\sum\limits_{d=1}^nd^k*\sum\limits_{i=1}^{[\frac nd]}\sum\limits_{j=1}^{[\frac md]}\gcd(i,j)==1$
$=\sum\limits_{d=1}^nd^k*\sum\limits_{i=1}^{[\frac nd]}\sum\limits_{j=1}^{[\frac md]}\sum\limits_{t|i,t|j}\mu(t)$
$=\sum\limits_{d=1}^nd^k*\sum\limits_{t=1}^n\mu(t)*[\frac n{td}]*[\frac m{td}]$
令$x=d*t$
原式=$\sum\limits_{x=1}^n[\frac nx][\frac mx]\sum\limits_{d|x}\mu(\frac xd)*d^k$

后面那个显然是积性函数,可以线性筛。线性筛预处理+分块 时间复杂度$O(n+T*\sqrt n)$

[BZOJ4407]于神之怒加强版的更多相关文章

  1. BZOJ4407: 于神之怒加强版(莫比乌斯反演 线性筛)

    Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d ...

  2. BZOJ4407 于神之怒加强版 - 莫比乌斯反演

    题解 非常裸的莫比乌斯反演. 但是反演完还需要快速计算一个积性函数(我直接用$nlogn$卷积被TLE了 推荐一个博客 我也不想再写一遍了 代码 #include<cstring> #in ...

  3. 【BZOJ4407】于神之怒加强版(莫比乌斯反演)

    [BZOJ4407]于神之怒加强版(莫比乌斯反演) 题面 BZOJ 求: \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k\] 题解 根据惯用套路 把公约数提出来 \[\sum ...

  4. 【BZOJ4407】于神之怒加强版 莫比乌斯反演

    [BZOJ4407]于神之怒加强版 Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行, ...

  5. 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 241  Solved: 119[Submit][Status][Discu ...

  6. BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 1067  Solved: 494[Submit][Status][Disc ...

  7. bzoj 4407 于神之怒加强版 (反演+线性筛)

    于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 1184  Solved: 535[Submit][Status][Discuss] D ...

  8. 【反演复习计划】【bzoj4407】于神之怒加强版

    #include<bits/stdc++.h> #define N 5000010 #define yql 1000000007 using namespace std; typedef ...

  9. 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛

    题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...

随机推荐

  1. 烂泥:nginx、php-fpm、mysql用户权限解析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ilanni.blog.51cto.com/526870/1561097 本文首发 ...

  2. Oracle 图形化以及命令行安装

    @(Oracle)[Install] Oracle 安装 相关版本说明 不同版本的Oracle需要安装在特定的系统版本之上. 如Oracle 11gR2的11.2.0.1.0需要安装在CentOS 5 ...

  3. eclipse中导入jar文件的源码

    有时候想看看一个jar包的源码是怎么写的,想按Ctrl+鼠标左键点击来自动导航这时候就需要先把源码给导入到eclipse中,步骤如下:首先准备jar包和源文件包比如:

  4. Python 读写文件中数据

    1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图             ...

  5. [NHibernate]代码生成器的使用

    目录 写在前面 文档与系列文章 代码生成器的使用 总结 写在前面 前面的文章介绍了nhibernate的相关知识,都是自己手敲的代码,有时候显得特别的麻烦,比如你必须编写持久化类,映射文件等等,举得例 ...

  6. 100多个基础常用JS函数和语法集合大全

    网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...

  7. Android实现页面跳转及传递参数的方法

    简单的示例 实现的效果是这样的: 第一个页面有一个按钮,一个文本框,点击按钮,将文本框的内容传递到第二个页面,并显示在第二个页面中. 首先是在给按钮添加点击事件 setOnClickListener( ...

  8. curl发送get和post请求

    function getAction($url='') { // curl 请求一共分四步,初始化,设置属性,执行并获取结果,释放句柄 // 一.初始化 $curl = curl_init(); // ...

  9. java.lang.IllegalStateException: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead

    java.lang.IllegalStateException: Not allowed to create transaction on sharedEntityManager - use Spri ...

  10. delphi XE4 隐藏程序在任务管理器和隐藏任务栏

    最新处理方法,偶然发现delphi下有个ShowMainForm属性,只要在Application.Initialize;后面加上Application.ShowMainForm := false;就 ...