文章目录

  • 题目链接:

题目链接:

http://poj.org/problem?id=1091
貌似真的要用高精度,这数据范围真的有问题,随便想个数据都能装不下,long long 能过应该是数据有点水~反正学到这个方法就是了 ~
比如: 8 100000000

要求的就是前面可以任意变的N个数以及最后一个数M的gcd等于1

所以就又是求的他的反面,就是用总的个数减去gcd=2的,减去gcd=3的…
那怎么求呢?比如gcd=d的,那么每个位置就有 M d \frac{M}{d} dM​个,总共N个数就有 ( M d ) N (\frac{M}{d})^N (dM​)N 种情况,但是 这里面还有重复的,就需要容斥了,容斥系数就是莫比乌斯函数,做了上一道题,这次反应过来了嘻嘻

但是一想,1~M每个数都要容斥么?这样不是就T了么?
但是阔以发现,如果这N个数d不是M的因子,那么与M再求个gcd,那就肯定是1了得哇,因此,只用容斥他的因子就行了

#include"iostream"
#include"cstring"
#include"vector"
#include"map"
using namespace std;
typedef long long LL;
const int maxn=1e5+5;
const int MOD=1e9+7;
int mu[maxn];
bool vis[maxn];
vector<LL>prime;
LL ksm(LL a,LL b)
{LL res=1,base=a;while(b){if(b&1)res=(res*base);base=(base*base);b>>=1;}return res;
}void PHI(int n)
{memset(vis,1,sizeof(vis));mu[1]=1;for(int i=2;i<=n;i++){if(vis[i]){prime.push_back(i);mu[i]=-1;}for(int j=0;j<prime.size()&&i*prime[j]<=n;j++){vis[i*prime[j]]=0;if(i%prime[j]==0)break;else{mu[i*prime[j]]=-mu[i];}}}
}
LL Mu(LL n)
{if(n<=maxn-5)return mu[n];int cnt=0,u=1;for(LL i=0;prime[i]*prime[i]<=n;i++){cnt=0;if(n%prime[i]==0)u=-u;while(n%prime[i]==0){n/=prime[i];cnt++;}if(cnt>=2)return 0;}if(n>1)u=-u;return u;
}
vector<LL>factor;
int main()
{PHI(maxn-5);LL N,M;while(cin>>N>>M){factor.clear();for(LL i=1;i*i<=M;i++){if(M%i==0){factor.push_back(i);if(i==M/i)continue;factor.push_back(M/i);}}LL ans=0;for(int i=0;i<factor.size();i++)//只有M的因子才容斥,不然肯定与M是互质的 {LL d=factor[i];LL cnt=M/d;LL tp=ksm(cnt,N)*Mu(d);ans+=tp;}cout<<ans<<endl;}
}

poj1091 跳蚤相关推荐

  1. Poj--1091 跳蚤(容斥定理)

    跳蚤 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一 ...

  2. poj1091跳蚤(容斥定理)

    题目: Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后 ...

  3. POj-1091 跳蚤

    原题链接:http://poj.org/problem?id=1091 题目大意:给你两个数n和m:总共有m^n张卡片,每张卡片上有n+1个数字,然后根据卡片上的数字可以向左跳也可以向右跳,每个数字跳 ...

  4. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  5. 跳蚤(POJ-1091)

    Problem Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡 ...

  6. poj1091:跳蚤【容斥原理】

    题目大意:中文题就不翻译了 思路:假设跳蚤选择X1个第一张卡片,X2个第二张卡片...Xn个第n张卡片,Xn+1张写着m的卡片,那么就可以列出方程:a1*X1+a2*X2+-+an*Xn+m*X(n+ ...

  7. POJ 1091 跳蚤

    跳蚤 Time Limit: 1000ms Memory Limit: 10000KB This problem will be judged on PKU. Original ID: 1091 64 ...

  8. P2231 [HNOI2002]跳蚤(裴蜀定理/莫比乌斯反演)

    P2231 [HNOI2002]跳蚤 给定一个长度为n+1的一列数,第n+1位为m,前n位小于m 求解使得他n+1个数的加减可以凑出1的方案数 首先可以凑出1,这显然是裴蜀定理,推一推就发现他要求所有 ...

  9. [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)

    [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相 description solution 一个到所有节点距离和最小的节点 ⇔\Leftrightarrow⇔ 树的重心(满足最重的儿 ...

最新文章

  1. sdio接口_多种接口的谷歌Coral模块,总有一款适合您~
  2. 一个SQL的几种写法
  3. 爱奇艺java 架构师_爱奇艺个性化实时推荐系统整体流程图 拿去细品
  4. 推荐系统 embedding 技术实践总结
  5. translateZ 带来的Z-index 问题
  6. [css] css常用的布局方式有哪些?
  7. 异常处理:try-catch-finally与throws的区别及使用情况
  8. thinkphp ajax 无刷新分页效果的实现
  9. 【导航仿真】基于matlab GUI PSINS导航仿真【含Matlab源码 1496期】
  10. 明解c语言入门篇第三版第九章答案,明解C语言 入门篇 第一章答案
  11. Qt基于FFmpeg解码本地视频后再编码
  12. C#今日头条推荐新闻爬取
  13. python打印N*N乘法表
  14. 台式计算机能分享热点吗,如何在电脑上开热点 台式电脑开热点的方法有哪些...
  15. 《快速上手ARM体系结构》网易公开课
  16. PID控制器的优缺点和周期
  17. 大型传统企业的数字化创新之路
  18. 岁末忆今朝,辞旧话新潮——心灵与技术的聚合
  19. Compound学习(二) 简单部署
  20. U.K. Considers Giving RBS Bailout Leeway

热门文章

  1. 实现 长链接变 短 链接
  2. 计算机怎么进行排名,电脑排序方式怎么自由排序
  3. 通过硬盘盘符查询硬盘槽位
  4. python中字节的介绍
  5. php mui消息推送,个推透传消息,触发receive后创建本地推送,点击状态栏消息可以打开APP触发不了click事件...
  6. 汉文学生对计算机软件,满-汉文计算机辅助翻译系统
  7. Ubuntu中下载和安装Eclipse
  8. 用Dockerfile定制镜像
  9. 分享一个Python 在线编辑器
  10. 浅谈arguments.callee