博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1796 How many integers can you find(容斥原理)
阅读量:4659 次
发布时间:2019-06-09

本文共 1151 字,大约阅读时间需要 3 分钟。

题意

就是给出一个整数n,一个具有m个元素的数组,求出1-n中有多少个数至少能整除m数组中的一个数

(1<=n<=10^18.m<=20)

题解

这题是容斥原理基本模型。

枚举n中有多少m中元素的个数,在结合LCM考虑容斥。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const long long N=205; 8 long long a[N],n,m,ans; 9 long long gcd(long long x,long long y){10 if(y==0)return x;11 else return gcd(y,x%y);12 }13 long long lcm(long long x,long long y){14 return x/gcd(x,y)*y;15 }16 void dfs(long long now,long long num,long long res,long long k){17 if(res==0){18 if(num==0)return;19 long long tmp=n/num;20 if(k&1)ans+=tmp;21 else ans-=tmp;22 return;23 }24 if(now==m+1)return ;25 if(lcm(num,a[now])<=n)dfs(now+1,lcm(num,a[now]),res-1,k);26 dfs(now+1,num,res,k);27 }28 int main(){29 while(scanf("%lld%lld",&n,&m)!=EOF){30 n--;31 for(long long i=1;i<=m;i++)scanf("%lld",&a[i]);32 for(long long i=1;i<=m;i++)dfs(1,1,i,i);33 printf("%lld\n",ans);34 }35 }

 

转载于:https://www.cnblogs.com/Xu-daxia/p/9715483.html

你可能感兴趣的文章
css的命名规则
查看>>
html input file 设置文件类型
查看>>
为什么我们不能坚持到底? 很多原因你需要知悉
查看>>
关于wtl的一个实验
查看>>
用Maven构建单机Mahout项目
查看>>
初步了解消息中间件
查看>>
hdu 4864 Task (馋)
查看>>
ASSERT函数
查看>>
Hibernate Criterion
查看>>
本人的微博转移
查看>>
python 游戏(井字棋)
查看>>
关于httpServlet.service()步骤
查看>>
怎么把txt转换成excel
查看>>
CDH版本java开发环境搭建
查看>>
【转】plist涉及到沙盒的一个问题
查看>>
控制iframe
查看>>
NSHashTable and NSMapTable
查看>>
iPhone开发之深入浅出 — ARC之对象转型
查看>>
php文本操作方法集合
查看>>
plsql下载安装
查看>>