题意略。

思路:

我们先不考虑[(i , j) == 1],在此情况下,其实这个值是sum( [ (i , j) == 1,2,3,....,n ] ) 这些情况。我们要求的仅仅是其中的第一部分而已。也即:

F(1) = f(1) + f(2) + f(3) + .... + f(n)。[1,2,3,....,n 是1的整数倍]

在这里,我们令 g(i) 为 i / 1 + i / 2 + .... + i / i 向下取整之和。令 G(i) 为 左式向上取整之和,我们有一个递推公式:

g(i) = G(i) - i + cnt[i]     G(i) = g(i - 1) + i

其中cnt[i]记录的是 i 的因子个数。

我们要想求出在 n 条件下的 F(1),则F(1) = G(1) + G(2) + ... + G(n)。这个我们可以用一个sum预先存下前缀和。而F(2) = G(2) + G(4) + ...

也即G(1) + G(2) + ... + G(n / 2)。

这里可以用莫比乌斯反演。

但是如果每个询问都从1~n这样计算反演,那么由于样例太多,会超时。那么我们可以考虑加一个sqrt(n)的优化。

详见代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL maxn = ;
const LL mod = 1e9 + ; LL F[maxn],f[maxn],cnt[maxn],sum[maxn];
LL n;
bool check[maxn];
LL prime[maxn],mu[maxn];
LL sum_mu[maxn]; void mobius(){
memset(check,false,sizeof(check));
mu[] = ;
sum_mu[] = ;
int tot = ;
for(LL i = ;i < maxn;++i){
if(!check[i]){
prime[tot++] = i;
mu[i] = -;
}
for(int j = ;j < tot;++j){
if(i * prime[j] > maxn) break;
check[i * prime[j]] = true;
if(i % prime[j] == ){
mu[i * prime[j]] = ;
break;
}
else mu[i * prime[j]] = -mu[i];
}
sum_mu[i] = mu[i] + sum_mu[i - ];
}
}
void init(){
for(LL i = ;i < maxn;++i){
for(LL j = ;i * j < maxn;++j){
++cnt[i * j];
}
}
f[] = F[] = ;
for(LL i = ;i < maxn;++i){
F[i] = f[i - ] + i;
F[i] %= mod;
f[i] = (F[i] - i + cnt[i] + mod) % mod;
}
for(int i = ;i < maxn;++i){
sum[i] = F[i] + sum[i - ];
}
} int main(){
init();
mobius();
while(scanf("%lld",&n) == ){
LL ans = ;
LL last = ;
for(LL i = ;i <= n;i = last + ){
last = n / (n / i);
ans += (sum_mu[last] - sum_mu[i - ]) * sum[n / i];
ans = (ans + mod) % mod;
//printf("sum[%d / %d] == %lld\n",n,i,sum[n / i]);
}
printf("%lld\n",ans);
}
return ;
}

HDU 6134的更多相关文章

  1. HDU 6134 Battlestation Operational(莫比乌斯反演)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6134 [题目大意] 求$\sum_{i=1}^{n}{\sum_{j=1}^{i}\lceil{\ ...

  2. 2017多校第8场 HDU 6134 Battlestation Operational 莫比乌斯反演

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6134 题意: 解法: 那么g(n)怎么求,我们尝试打表发现g(n)是有规律的,g(n)=g(n-1)+ ...

  3. hdu 6134 Battlestation Operational 莫比乌斯反演

    Battlestation Operational Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  4. 2017ACM暑期多校联合训练 - Team 8 1002 HDU 6134 Battlestation Operational (数论 莫比乌斯反演)

    题目链接 Problem Description The Death Star, known officially as the DS-1 Orbital Battle Station, also k ...

  5. HDU 6134 Battlestation Operational | 2017 Multi-University Training Contest 8

    破结论没听说过,上式推导到第三步的时候有了O(nlogn) 的做法(枚举倍数+1最后前缀和),并且这种做法可以直接应用到向上取整的计算中,详见forever97 但由于d(n)是积性函数,故可O(n) ...

  6. hdu 6134: Battlestation Operational (2017 多校第八场 1002)【莫比乌斯】

    题目链接 比赛时没抓住重点,对那个受限制的“分数求和”太过关心了..其实如果先利用莫比乌斯函数的一个性质把后面那个[gcd(i,j)=1]去掉,那么问题就可以简化很多.公式如下 这和之前做过的一道题很 ...

  7. hdu 6134 Battlestation Operational (莫比乌斯反演+埃式筛)

    Problem Description   > The Death Star, known officially as the DS-1 Orbital Battle Station, also ...

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. LINUX下查找大文件及大的文件夹

    原帖地址:https://www.cnblogs.com/iyoume2008/p/6105590.html 今天正好碰到这样的问题,在博客园中看到有以上地址的一篇文章,照着上面的操作解决了问题,但是 ...

  2. 关于Servlet小总结

    目录 Servlet Servlet简介 Servlet简单实现 Servlet注解 Servlet生命周期 启动时加载Servlet Servlet客户端 HTTP请求的结构 Servlet服务器 ...

  3. ASP.NET Core MVC 之布局(Layout)

    1.什么是布局 布局通常包含常见的用户界面元素,例如应用头,导航或菜单元素和页脚,如图: 常见的HTML结构(例如脚本和样式表)也经常被应用程序中许多页面使用.所有这些共享元素都可以在布局中定义,然后 ...

  4. AMD CPU环境下使用android studio,eclipse的Genymotion插件

    1.下载安装VirtualBox Genymotion的运行需要此环境(链接) 2.下载安装android模拟器Genymotion 由于官网的下载速度过慢,建议直接百度下载Genymotion(链接 ...

  5. 自定义SWT控件三之搜索功能下拉框

    3.搜索功能下拉弹出框 package com.view.control.select; import java.util.ArrayList; import java.util.LinkedList ...

  6. 爬虫环境搭建及 scrapy 启动

    创建虚拟环境 C:\Users\Toling>mkvirtualenv article 这个是普通的创建虚拟环境,但是实际开发中可能会使用python2或python3所以我们需要指定开发的环境 ...

  7. 记录一下我做Udacity 的Data Scientist Nano Degree Project

    做项目的时候看了别人的blog,决定自己也随手记录下在做项目中遇到的好的小知识点. 最近在做Udacity的Data Scientist Nano Degree Project的Customer_Se ...

  8. Two types of people with high scores of English exams

    I believe that there are two types of people who get high scores in English exams: 1) have high inte ...

  9. java并发编程(二十五)----(JUC集合)LinkedBlockingDeque和ConcurrentLinkedDeque介绍

    Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque.这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂. LinkedBlockingDeque 我们 ...

  10. win7-BIOS中开启AHCI模式电脑蓝屏怎么办?

    win7-BIOS中开启AHCI模式电脑蓝屏怎么办? 来源:U大师 u盘装系统 不少网友都表示给电脑安装win7系统后,如果在BIOS中开启IDE模式就一切正常而为AHCI模式时就会出现蓝屏.其实那是 ...