hdu5321 beautiful set(莫比乌斯反演)
设\(cnt[i]\)为权值为i的倍数的数的数量。
\(f0[i],f1[i]\)分别为两种方法\(gcd=i\)的贡献是i的多少倍。
\(F0[i],F1[i]\)分别为两种方法\(gcd\)为\(i\)的倍数的贡献是i的多少倍。
\(F0[i]=\sum_{j=1}^{cnt[i]}A_{cnt[i]}^{cnt[i]-j}*(n-j)!*(n-j+1)\)
\(F1[i]=\sum_{j=1}^{cnt[i]}j*C_{cnt[i]}^{j}\)
然后显然有\(F[i]=\sum_{d\mid i}f[d]\)
然后莫比乌斯反演一下
\]
复杂度调和级数\(O(nlnn)\)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define int long long
const int N=101000;
const int p=258280327;
bool book[N];
int prime[N],mu[N],fac[N],inv[N],num;
int a[N],F0[N],f0[N],F1[N],f1[N],mx,cnt[N],T,n;
int read(){
int sum=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return sum*f;
}
void init(){
for(int i=0;i<=100000;i++)
cnt[i]=a[i]=f1[i]=f0[i]=F1[i]=F0[i]=0;
}
int ksm(int x,int b){
int tmp=1;
while(b){
if(b&1)tmp=tmp*x%p;
x=x*x%p;
b>>=1;
}
return tmp;
}
int A(int n,int m){
return fac[n]*inv[n-m]%p;
}
int C(int n,int m){
return fac[n]*inv[n-m]%p*inv[m]%p;
}
void pre_work(){
mu[1]=1;
for(int i=2;i<=100000;i++){
if(book[i]==0){
prime[++num]=i;
mu[i]=-1;
}
for(int j=1;j<=num&&prime[j]*i<=100000;j++){
book[i*prime[j]]=1;
if(i%prime[j]==0)break;
mu[prime[j]*i]=-mu[i];
}
}
fac[0]=1;
for(int i=1;i<=100000;i++)fac[i]=(fac[i-1]*i)%p;
inv[100000]=ksm(fac[100000],p-2);
for(int i=99999;i>=0;i--)inv[i]=inv[i+1]*(i+1)%p;
}
signed main(){
pre_work();
while(scanf("%lld",&n)!=EOF){
init();
for(int i=1;i<=n;i++)a[read()]++;
for(int i=1;i<=100000;i++)
for(int j=i;j<=100000;j+=i)cnt[i]+=a[j];
for(int i=1;i<=100000;i++)
for(int j=1;j<=cnt[i];j++)
F0[i]=(F0[i]+A(cnt[i],j)*fac[n-j+1])%p,
F1[i]=(F1[i]+C(cnt[i],j)*j)%p;
for(int i=1;i<=100000;i++)
for(int j=i;j<=100000;j+=i)
f0[i]=(f0[i]+mu[j/i]*F0[j])%p,
f1[i]=(f1[i]+mu[j/i]*F1[j])%p;
int ans1=0,ans2=0;
for(int i=1;i<=100000;i++)
ans1=(ans1+f0[i]*i)%p,
ans2=(ans2+f1[i]*i)%p;
if(ans1>ans2)printf("Mr. Zstu %lld\n",ans1);
else if(ans1<ans2)printf("Mr. Hdu %lld\n",ans2);
else printf("Equal %lld\n",ans2);
}
return 0;
}
hdu5321 beautiful set(莫比乌斯反演)的更多相关文章
- HDU 5321 Beautiful Set (莫比乌斯反演 + 逆元 + 组合数学)
题意:给定一个 n 个数的集合,然后让你求两个值, 1.是将这个集合的数进行全排列后的每个区间的gcd之和. 2.是求这个集合的所有的子集的gcd乘以子集大小的和. 析:对于先求出len,len[i] ...
- hdu1695 GCD(莫比乌斯反演)
题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...
- BZOJ 2154: Crash的数字表格 [莫比乌斯反演]
2154: Crash的数字表格 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2924 Solved: 1091[Submit][Status][ ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)
题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...
- 莫比乌斯函数筛法 & 莫比乌斯反演
模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...
- 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2371 Solved: 1143[Submit][Sta ...
- POI2007_zap 莫比乌斯反演
题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...
- hdu.5212.Code(莫比乌斯反演 && 埃氏筛)
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
随机推荐
- ZBrush软件Texture纹理调控板
在zbrush4r8中对一个模型进行纹理制作在速度和易用性方面有诸多优势,通过Texture调控板创建.导入和输出纹理是及其方便且快捷的. Import (导入):导入Photoshop (.psd) ...
- 立即调用函数(IIFE)
定义: IIFE:立即调用的函数表达式,声明函数的同时立即调用这个函数. 语法: IIFE的常用写法:这两种写法的作用相同,只是表现形式不同而已,()只是起了自执行的作用 (function(){.. ...
- div基本组成要素
title下面先清除固有格式 style{ *{ margin:0 auto padding:0 foant family } } div{ width height border backgroun ...
- node——简单的服务器启动+乱码问题解决,响应报文头
这个是一个比较简单的代码 // 1.加载hrrp模块 var http=require('http'); // 2.创建一个http服务对象 var server=http.createServer( ...
- 7、A Design of Group Recommendation Mechanism Considering Opportunity Cost and Personal Activity Using Spark Framework---使用Spark框架的基于机会成本以及个人活动群组推荐机制
来源EDB2018---EDB 一.摘要: 组推荐是将一种项目(例如产品.服务)推荐给由多个成员组成的组的方法. 最小痛苦法(least Misery)是一种具有代表性的群体推荐方法,其能够推荐考虑群 ...
- Docker-镜像的操作命令
2.镜像在Ubuntu中的一些命令 (1)docker image ls 列出镜像 能够罗列出docker中所以的镜像所在的仓库.镜像标签.镜像ID.镜像的创建日期.镜像的大小等等信息. (2)doc ...
- VUE使用中踩过的坑
前言 vue如今可谓是一匹黑马,github star数已居第一位!前端开发对于vue的使用已经越来越多,它的优点就不做介绍了,本篇是我对vue使用过程中以及对一些社区朋友提问我的问题中做的一些总结, ...
- django-7-django模型系统
<<<常用的模型字段类型>>>https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-type ...
- 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
1.Operand data type nvarchar(max) is invalid for sum operator 要转换格式 2.Conversion failed when convert ...
- CodeForces 362E Petya and Pipes
Petya and Pipes Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. ...