同BZOJ 2154 但是需要优化

$ans=\sum_{d<=n}d*\sum_{i<=\lfloor n/d \rfloor} i^2 *\mu(i)* Sum(\lfloor \frac {n}{i*d} \rfloor,\lfloor \frac {m}{i*d} \rfloor)$

如果我们设$T=i*d$

$ans=\sum_{T<=n} Sum(\lfloor \frac {n}{T}\rfloor,\lfloor \frac {m}{T}\rfloor)\sum_{i \mid T} T*i*\mu(i)$

如果我们能计算出 $\sum_{i \mid T} T*i*\mu(i)$的前缀和 我们就可以在\Theta (n)的时间内解决这个问题

它是积性函数,当$pr[j] \nmid i$的时候,新加入的$pr[j]$对$\mu$没有贡献(均为0)只有$T$的部分发生了改变所以乘一个$pr[j]$就可以了

然后就可以$\Theta (T\sqrt n)$解决了

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define md 100000009
#define maxn 10000005 int n,m,t,h[maxn],pr[maxn],top=0;
bool vis[maxn]; void init()
{
memset(vis,false,sizeof vis);
h[1]=1;
F(i,2,maxn-1)
{
if (!vis[i])
{
pr[++top]=i;
h[i]=((i-(ll)i*i)%md+md)%md;
}
F(j,1,top)
{
if ((ll)i*pr[j]>=maxn) break;
vis[i*pr[j]]=true;
if (i%pr[j]==0)
{
h[i*pr[j]]=((ll)h[i]*pr[j])%md;
break;
}
h[i*pr[j]]=((ll)h[i]*h[pr[j]])%md;
}
}
F(i,2,maxn-1)
h[i]=((ll)h[i-1]+h[i])%md;
} ll Sum(int n,int m)
{
n%=md; m%=md;
n=((ll)n*(n+1)/2)%md;
m=((ll)m*(m+1)/2)%md;
return ((ll)n*m)%md;
} void solve(int n,int m)
{
if (n>m) swap(n,m);
ll ret=0;
for (int i=1,last=0;i<=n;i=last+1)
{
last=min(n/(n/i),m/(m/i));
ret=(ret+((ll)h[last]-h[i-1])*Sum(n/i,m/i))%md;
}
ret+=md; ret%=md;
printf("%lld\n",ret);
} int main()
{
init();
scanf("%d",&t);
while (t--)
{
scanf("%d%d",&n,&m);
solve(n,m);
}
}

  

最新文章

  1. mysql删除重复记录语句的方法
  2. C# 深入浅出 异步(八)
  3. Hibernate基本CRUD
  4. [OpenCV] Image Processing - Fuzzy Set
  5. IBatisNet基础组件
  6. Django的Context和RequestContext
  7. 如何用OpenCV自带的adaboost程序训练并检测目标
  8. base64coder调用
  9. linux 中permission denied的问题:
  10. HDU 5776 sum (思维题)
  11. Ultra-QuickSort (poj 2002)
  12. HDOJ(HDU) 1570 A C
  13. IO调度算法研究1
  14. &quot;UBUNTU: SAUCE: apparmor: 3.0 backport of apparmor3&quot;
  15. 两列布局,读《css那些事儿》
  16. 用spark导入数据到hbase
  17. [ubuntu]apt-get update突然出现arm package找不到
  18. idea language level 介绍
  19. ref:Spring JdbcTemplate+JdbcDaoSupport实例
  20. 对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成

热门文章

  1. UITabBarController、导航控制器、控制器关系
  2. 中移动TD-LTE 4G设备招标
  3. 洛谷 P2347 砝码称重 != codevs 2144
  4. 关于在filter中获取WebApplicationContext的实践
  5. leetcode 4.两个排序数组的中位数
  6. ssh复制remote
  7. CSS声明各个浏览器私有属性的命名前缀
  8. 安装VC++6.0实验环境
  9. 歌乐第二弹:C++九九八十一
  10. shell脚本,对MySQL数据库进行分库加分表备份