文章目录

  • 题目链接:

题目链接:

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. let 和 var 区别
  2. 030_Message消息提示
  3. SAP 创业计划 ---之三
  4. EAS BOS 发布
  5. cad立面索引符号 规范_一套标准规范施工图包含哪些?13年深化设计师3分钟带你正确认知...
  6. [转]序列化悍将Protobuf-Net,入门动手实录
  7. angular判断两个对象值是否相等,包含对象深层判断,深拷贝的两个对象
  8. 刷新SOTA ! 视频恢复的重中之重:时间对齐!
  9. Python图像处理库PIL的ImageStat模块介绍
  10. python db.commit_python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)...
  11. 测试基础-06-测试计划编写
  12. 计算机组成原理—指令格式
  13. org.springframework.web.context.ContextLoaderListener 解决方案
  14. 大数据分析,数据可视化之美,BI
  15. 迭代总结会议的旁观感想
  16. sdlc 瀑布式 生命周期_SDLC指南–软件开发生命周期的阶段和方法
  17. Kaggle: Tweet Sentiment Extraction 方法总结 Part 2/2: 金牌思路总结
  18. 软件开发人员的作战手册 - 让程序员活的久一点
  19. 在线图书销售系统顺序图_myON电子图书馆最全介绍
  20. win7文件夹工作组指定计算机共享,Win7工作组局域网文件共享需启动的服务

热门文章

  1. 2022年一级注册建筑师考试建筑经济、施工及设计业务管理复习题及答案
  2. Windows NT 注册表中的多媒体驱动程序位置
  3. C语言基础之11:字符串和字符串函数
  4. 首都医科大学采购ZJ-3型精密D33测试仪和PZT薄膜极化装置一套
  5. Rviz 和Gazebo联合仿真运动(二)
  6. 怼天怼地的 Linux 之父宣布休息,为过去的行为道歉
  7. 天翼电信共享与虚拟机配置
  8. Windows下自动化批量运行CMD命令
  9. 【乱谈】给过去的告别
  10. Mysql数据库中or的使用