/**
题目:hdu6134 Battlestation Operational
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6134
题意:f(n) = sigma[1<=i<=n]sigma[1<=j<=i]ceil[i/j] (gcd(i,j)==1)
给定一个n,求f(n);
思路:
公式: n = sigma[d|n]phi[d] = sigma[d|n]phi[n/d]; phi[x]表示<=x的数与x互质的个数。
证明: gcd(i,n)==d => gcd(i/d,n/d)=1; 那么和n最大公约数为d的个数为phi[n/d]; 所以n = sigma[d|n]phi[n/d] = sigma[d|n]phi[d]; 根据n = sigma[d|n]phi[d];
那么有定义:
h(i)表示sigma[1<=j<=i]ceil[i/j] (gcd(i,j)==1) 这里的j都是和i互质时候计算的结果。
g(i)表示sigma[1<=j<=i]ceil[i/j] 那么h(i) = sigma[d|i]mu[d]*g(i/d); 计算所有的g(d)(1<=d<=n)通过枚举j跳在d中跳的方式处理出来,然后前缀和(也可以直接计算出来。不需要再求前缀和,具体看代码) 计算出来所有的h(i)。f(i) = sigma[1<=j<=i]h(j); */ #include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 1e6+;
const int mod = 1e9 + ;
LL f[N], g[N], h[N];
int prime[N], tot, not_prime[N];
int mu[N];
void mobius()
{
mu[] = ;
tot = ;
for(int i = ; i < N; i++){
if(!not_prime[i]){
prime[++tot] = i;
mu[i] = -;
}
for(int j = ; prime[j]*i<N; j++){
not_prime[prime[j]*i] = ;
if(i%prime[j]==){
mu[prime[j]*i] = ;
break;
}
mu[prime[j]*i] = -mu[i];
}
}
}
void init()
{
for(int i = ; i < N; i++){
g[i]++;
for(int j = i+; j < N; j+=i){
g[j]++;
}
}
for(int i = ; i < N; i++) g[i] = (g[i]+g[i-])%mod; for(int i = ; i < N; i++){
for(int j = i; j < N; j+=i){
h[j] = (h[j]+mu[i]*g[j/i]%mod+mod)%mod;
}
}
for(int i = ; i < N; i++){
f[i] = (f[i-]+h[i])%mod;
}
}
int main()
{
int n;
mobius();
init();
while(scanf("%d",&n)==)
{
printf("%lld\n",f[n]);
}
return ;
}

hdu6134 Battlestation Operational 莫比乌斯第一种形式的更多相关文章

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

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

  2. 【数论】【莫比乌斯反演】【线性筛】hdu6134 Battlestation Operational

    看这个题解吧:http://blog.csdn.net/wubaizhe/article/details/77338332 代码里顺便把几个常用的线性筛附上了. Key:1.gcd(i,j)==1利用 ...

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

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

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

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

  5. [hdu6134]Battlestation Operational

    1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 1000000007 4 #define N 1000005 ...

  6. Core CLR 自定义的Host官方推荐的一种形式(第一种)

    .Net Core CLR提供两种Host API访问 托管代码的形式,按照微软官方的说法,一种是通过CoreClr.DLL来直接调用托管生成的DLL程序集,另外一种是通过CoreClr里面的C导出函 ...

  7. Logistic回归的两种形式y=0/1,y=+1/-1

    第一种形式:y=0/1 第二种形式:y=+1/-1 第一种形式的损失函数可由极大似然估计推出: 第二种形式的损失函数:  , 参考:https://en.wikipedia.org/wiki/Loss ...

  8. 事件绑定、取消的二种形式 & call

    <script> //call 函数下的一个方法,call方法第一个参数可以改变函数执行过程中的内部this的指向,call方法第二个参数开始就是原来函数的参数列表. function f ...

  9. 【容斥原理,莫比乌斯反演】用容斥替代莫比乌斯反演第二种形式解决gcd统计问题

    名字虽然很长.但是其实很简单,对于这一类问题基本上就是看你能不能把统计的公式搞出来(这时候需要一个会推公式的队友) 来源于某次cf的一道题,盼望上紫的我让潘学姐帮我代打一道题,她看了看跟我说了题解,用 ...

随机推荐

  1. 解决Oracle监听错误的一种办法

    1:事出有因 安装oracle数据库,默认安装的是orcl数据库,安装完成后查看了一下字符集是gbk的,由于业务需要al32utf8的字符集,所以需要修改字符集,但是修改却无效.于是就删除了默认的or ...

  2. SCP远程拷贝命令

    利用scp指令可以在linux机器间传递文件,个人使用几次感觉效率还是较高的,比SFTP+本地做媒介要高得多. 1.本地拷贝到远程. 这种方式的命令模式是scp local_file remote_u ...

  3. data目录和binlog目录搬迁的方法

    刚开始安装时使用了默认目录,使用一段时间,数据慢慢变在,发现当前设置的目录空间不够时,就要搬迁数据到另一个目录了 如果全过程使用的是Mysql用户,应该可以正常启动. 如果用的ROOT用户,可能不能正 ...

  4. JAVA中split对空串的影响。

    public class SplitEmptyString { /** * @param args */ public static void main(String[] args) { // 空串的 ...

  5. 【转】TextView的详细属性

    1.简介: TextView控件可用来展示文本信息(包括HTML文本),可以手动来设置可编辑或不可编辑. 2.创建对象: 1)在代码中通过new的方式创建,创建,设置文本,样式后,通过setConte ...

  6. VS选项中没有C#相关设置选项?

    在VS中,行号的设置在工具-选项-文本编辑器,可里面没有VS,我还以为是之前卸载了SP1后造成的. 原来是因为,VS默认环境设置的VB,选项对话框左下角有"显示所有设置"的复选框, ...

  7. ibatis自定义数据类型在不支持中文的数据库存储汉字

    道理很简单,把gbk的汉字转换成iso编码存进数据库就可以了,读出来的时候把iso转换成gbk还原出原始的汉字. ibatis可以自定义类型处理器,在这里面做编码转换再适合不过了! sqlmap-co ...

  8. GCC高级测试功能扩展——程序性能测试工具gprof、程序覆盖测试工具gcov

    gprof是GNU组织下的一个比较有用的性能测试功能: 主要功能:   找出应用程序中消耗CPU时间最多的函数: 产生程序运行时的函数调用关系.调用次数 基本原理:   首先用户要使用gprof工具, ...

  9. vue mixin使用

    1.概述 将一些公用方法引入到不同的组件中. 2.引入方式 (1)全局引入 // 注册全局Mixin Vue.mixin({ methods: { $touch: function() { // 用以 ...

  10. WebApi2 知识点总结

    1.建议使用异步接口async Task<> public async Task<IHttpActionResult> Get() 如果返回的是IEnumerable请使用: ...