博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划157:bzoj1220:[HNOI2002]跳蚤
阅读量:6985 次
发布时间:2019-06-27

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

 

扩展欧几里得:ax+by=gcd(a,b) 一定有解

能跳到左边一格,即ax+by=-1 

若a,b的gcd=1,则一定有解

所以问题转化为

求n个不大于m的数,他们与m的gcd=1 的方案数

容斥原理

把m分解质因数

枚举质因数,若他们的乘积=x

即当前n个数与m的gcd是x的倍数

x的倍数由m/x个,所以当前序列有(m/x)^ n

ans=m^n-(m/x1)^n + (m/x2) ^n - ……

 

没写高精度

 

#include
#include
typedef long long LL;int sum,p[30];LL pow(LL a,LL b){ LL res=1; for(;b;a*=a,b>>=1) if(b&1) res*=a; return res;}int main(){ LL n,m; scanf("%lld%lld",&n,&m); LL k=m; for(int i=2;i*i<=k;++i) if(!(k%i)) { p[++sum]=i; while(k%i==0) k/=i; } if(k>1) p[++sum]=k; int s=1<

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8084425.html

你可能感兴趣的文章
Microsoft Edge更新:支持WebVR,使Flash可以即点即运行
查看>>
Netflix 混沌工程手册 Part 3:实践方法
查看>>
微软推出Windows Lite,目标Chrome OS上网本
查看>>
书评与摘要:Infrastructure as Code
查看>>
Better Software East/DevOps East/Agile Dev East 2016大会上的教程介绍
查看>>
深入理解浏览器的缓存机制
查看>>
详解蚂蚁金服 SOFAJRaft:生产级高性能 Java 实现
查看>>
用PVS在.NET内核中发现的缺陷
查看>>
中国在两年内赶超美国AI?李开复:不一定
查看>>
战胜阿里和腾讯,Ripple已经获得200家跨境支付客户!
查看>>
代码自解释不是不写注释的理由
查看>>
剖析AWS CodeDeploy
查看>>
首次踏入vue坑——阅读zhihudaily-vue源码
查看>>
前端开发工具——汇总篇
查看>>
Rust编程语言的核心部件
查看>>
15条软件开发黄金定律
查看>>
Facebook广告平台遭遇8小时服务中断,或对黑色星期五购物节造成影响
查看>>
关于《在Windows与.NET平台上的持续交付实践》的问答录
查看>>
RTC2018现场速递:实时互动在线上创造了一个新世界
查看>>
JUnit 5 – 早期试用体验 – 第1篇
查看>>