hdu 4675 GCD of Sequence
数学题!
从M到1计算,在计算i的时候,算出原序列是i的倍数的个数cnt;
也就是将cnt个数中的cnt-(n-k)个数变掉,n-cnt个数变为i的倍数。
且i的倍数为t=m/i;
则符合的数为:c[cnt][n-k]*t^(n-cnt)*(t-1)*(cnt-(n-k)).
这样得到的是所有i的倍数,还要减去2*i,3*i……
代码如下:
#include<stdio.h>
#include<cstring>
#define M 1000000007
#define MM 300001
#define ll __int64
#define I(x) scanf("%d",&x)
int a[MM],num[MM];
ll c[MM],an[MM],sum;
ll pows(ll a,ll b)
{
ll ans=;
while(b){
if(b&) ans=(ans*a)%M;
b>>=;
a=(a*a)%M;
}
return ans;
}
ll inv(ll a,ll m)
{
if(a == )return ;
return inv(m%a,m)*(m-m/a)%m;
}
int main()
{
int n,m,k,i,j,cnt,t;
while(scanf("%d%d%d",&n,&m,&k)!=EOF){
memset(num,,sizeof(num));
for(i=;i<n;i++){
I(a[i]);
num[a[i]]++;
}
c[n-k]=;
for(i=n-k+;i<=n;i++) c[i]=c[i-]*i%M*inv(i-(n-k),M)%M;
for(i=m;i>=;i--){
cnt=;sum=;
for(j=;i*j<=m;j++){
cnt+=num[i*j];
if(j>) sum=(sum+an[i*j])%M;
}
t=m/i;
if(t==){
if(cnt==n-k) an[i]=;
else an[i]=;
continue;
}
if(cnt<n-k){
an[i]=;
continue;
}
an[i]=c[cnt]*pows(t,n-cnt)%M*pows(t-,cnt-(n-k))%M;
an[i]=((an[i]-sum)%M+M)%M;
}
for(i=;i<=m;i++){
printf("%I64d",an[i]);
if(i<=m-) printf(" ");
else printf("\n");
}
}
return ;
}
hdu 4675 GCD of Sequence的更多相关文章
- HDU 4675 GCD of Sequence (2013多校7 1010题 数学题)
GCD of Sequence Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)T ...
- 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)
先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...
- HDU 4675 GCD of Sequence(容斥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4675 题意:给出n,m,K,一个长度为n的数列A(1<=A[i]<=m).对于d(1< ...
- HDU - 4675 GCD of Sequence (莫比乌斯反演+组合数学)
题意:给出序列[a1..aN],整数M和k,求对1-M中的每个整数d,构建新的序列[b1...bN],使其满足: 1. \(1 \le bi \le M\) 2. \(gcd(b 1, b 2, -, ...
- HDU 4675 GCD of Sequence(莫比乌斯反演 + 打表注意事项)题解
题意: 给出\(M\)和\(a数组\),询问每一个\(d\in[1,M]\),有多少组数组满足:正好修改\(k\)个\(a\)数组里的数使得和原来不同,并且要\(\leq M\),并且\(gcd(a_ ...
- hdu4675 GCD of Sequence 莫比乌斯+组合数学
/** 题目:hdu4675 GCD of Sequence 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4675 题意:给定n个数的a数组,以及m,k: ...
- HDU 5726 GCD 区间GCD=k的个数
GCD Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- HDU 5783 Divide the Sequence(数列划分)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- 判断相同区间(lazy) 多校8 HDU 5828 Rikka with Sequence
// 判断相同区间(lazy) 多校8 HDU 5828 Rikka with Sequence // 题意:三种操作,1增加值,2开根,3求和 // 思路:这题与HDU 4027 和HDU 5634 ...
随机推荐
- iOS - 视图与手势(UIview & UIGestureRecognizer)
01 UIView视图的基本使用 --- 在根视图中添加2个UIView视图 //视图确实加载时调用 - (void)viewDidLoad { [super viewDidLoad]; // Do ...
- MyBatis参数传入集合之foreach动态sql
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.ite ...
- lex&yacc4
yacc: we cannt use the $$ value dirictly. we need get it irrotly;
- 进度条轮播【BackgroundColor】
直接贴代码先看 HTML: <div class="bannar"> <div class="img"> <ul> < ...
- Export功能 导致 页面显示很多非法字符,还可能页面显示两次
private void exportBinaryToExcel(byte[] bytes, string filename) { Response.AddHeader("Content-D ...
- python学习之socket创建html服务器
#coding:utf-8 import socket def process_request(request): request.recv(1024)#读取接受的字节 request.send(&q ...
- 淘宝IP地址库API接口(PHP)通过ip获取地址信息
淘宝IP地址库网址:http://ip.taobao.com/ 提供的服务包括: 1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 2. 用 ...
- Demo学习: Cookies Demo
Cookies Demo 浏览器Cookies的读写,最常用的就是记录用户的登录信息,在项目里做登录界面时也用到了Cookies功能. procedure TMainForm.UniButton2Cl ...
- Python在Windows下开发环境配置汇总
最近比较关注学习Python方面的资料和课程,由于Python本身基本都是在Linux下开发,本人windows用习惯了初用Linux各种别扭啊. 下面将我在配置Windows环境下的禁言写出来,与大 ...
- Web服务器集群搭建关键步骤纪要
前言:本文记述了搭建一个小型web服务器集群的过程,由于篇幅所限,系统.软件的安装和基本配置我这里就省略了,只记叙关键配置和脚本内容.假如各位朋友想了解各软件详细配置建议查阅官方文档. 一 需求分析: ...