HDU6134 Battlestation Operational 【莫比乌斯】
来源:互联网 发布:大数据统计图 编辑:程序博客网 时间:2024/05/20 03:04
链接
#include<stdio.h>#include<bits/stdc++.h>#define ll long long#define pii pair<int,int>#define pll pair<ll,ll>#define MEM(a,x) memset(a,x,sizeof(a))#define lowbit(x) ((x)&-(x))using namespace std;const int inf=1e9+7;const int N = 1e6 + 50;namespace Moblus{ const int maxn = N; bool check[maxn+10]; int prime[maxn+10]; int mu[maxn+10]; void Moblus(){ MEM(check,0); mu[1]=1; int tot=0; for(int i=2;i<=maxn;++i){ if(!check[i]){ prime[tot++]=i; mu[i]=-1; } for(int j=0;j<tot;++j){ if((ll)i*prime[j]>maxn){ break; } check[i*prime[j]]=1; if(i%prime[j]==0){ mu[i*prime[j]]=0; break; } else{ mu[i*prime[j]]=-mu[i]; } } } }}ll g[N],t[N];void getG(int n){//g[n]= sum(i/j向上取整) for(int j=1;j<=n;++j){//枚举j for(int k=1,ed=n/j+(n%j>0);k<=ed;++k){//枚举k,向上取整(i/j)=k int a=(k-1)*j+1;//a/j=k int b=(k*j+1);//b/j=k+1 a=min(max(a,j),n+1);//当a,b<j时,全部操作到j上,避免往前累加 b=min(max(b,j),n+1); t[a]=(t[a]+k)%inf; t[b]=(t[b]-k)%inf; } t[j]=(t[j]+t[j-1])%inf; g[j]=t[j];//g[j]=t[1]+t[2]+..+t[j] } for(int i=1;i<=n;++i){ g[i]+=g[i-1]; g[i]%=inf; }}ll ans[N];void slove(int n){ Moblus::Moblus(); getG(n); for(int i=1;i<=n;++i){ for(int j=i;j<=n;j+=i){ ans[j]+=Moblus::mu[i]*(g[j/i]-g[j/i-1])%inf; ans[j]%=inf; } } for(int i=1;i<=n;++i){ ans[i]=(ans[i]+ans[i-1])%inf; }}int main(){ //freopen("/home/lu/code/r.txt","r",stdin); //freopen("/home/lu/code/w.txt","w",stdout); slove(1e6+1); int n; while(~scanf("%d",&n)){ printf("%lld\n",(ans[n]+inf)%inf); } return 0;}
阅读全文
1 0
- HDU6134 Battlestation Operational 【莫比乌斯】
- 【HDU6134】Battlestation Operational (莫比乌斯反演)
- 【HDU6134】Battlestation Operational(莫比乌斯反演)
- hdu6134 Battlestation Operational 莫比乌斯反演
- Battlestation Operational(hdu6134 莫比乌斯反演)
- hdu 6134 Battlestation Operational 莫比乌斯反演
- 解题报告:HDU_6134:Battlestation Operational (莫比乌斯反演)
- HDU 6134 Battlestation Operational-莫比乌斯
- HDU 6134 Battlestation Operational(积性函数+莫比乌斯反演)
- 2017多校八 1002题 hdu 6134 Battlestation Operational 艾弗森约定 莫比乌斯函数 分块
- hdu 6134 Battlestation Operational (莫比乌斯反演+线性筛法+差分)
- HDU 6134 Battlestation Operational(莫比乌斯反演+线性筛)
- HDU 6134 Battlestation Operational 莫比乌斯反演 + 数学推导
- HDU 6134(2017 多校训练:Battlestation Operational(莫比乌斯反演))
- HDU 6134 Battlestation Operational 2017多校8 莫比乌斯反演
- HDU 6134 && 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)
- HDU 6134 Battlestation Operational(基本数论+莫比乌斯反演)——2017 Multi-University Training Contest
- hdu6134 Battlestation Operational【2017多校第八场】
- [Treap] poj2761 Feed the dogs
- vue.js学习之组件(上篇)
- [编程题]旋转数组的最小数字
- Java中的匿名内部类
- 字符串问题---将整数字符串转成整数型
- HDU6134 Battlestation Operational 【莫比乌斯】
- 一行js代码破解百度云大文件下载限制
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- 【HDU4952】Number Transformation(数学)
- module 'pandas' has no attribute 'computation'
- 遍历二叉树的各种操作(非递归遍历)
- BOM
- 欧拉函数
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历