poj1091 跳蚤
文章目录
- 题目链接:
题目链接:
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 跳蚤相关推荐
- Poj--1091 跳蚤(容斥定理)
跳蚤 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一 ...
- poj1091跳蚤(容斥定理)
题目: Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后 ...
- POj-1091 跳蚤
原题链接:http://poj.org/problem?id=1091 题目大意:给你两个数n和m:总共有m^n张卡片,每张卡片上有n+1个数字,然后根据卡片上的数字可以向左跳也可以向右跳,每个数字跳 ...
- 信息学竞赛中的数学知识 --- 容斥原理
C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...
- 跳蚤(POJ-1091)
Problem Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡 ...
- poj1091:跳蚤【容斥原理】
题目大意:中文题就不翻译了 思路:假设跳蚤选择X1个第一张卡片,X2个第二张卡片...Xn个第n张卡片,Xn+1张写着m的卡片,那么就可以列出方程:a1*X1+a2*X2+-+an*Xn+m*X(n+ ...
- POJ 1091 跳蚤
跳蚤 Time Limit: 1000ms Memory Limit: 10000KB This problem will be judged on PKU. Original ID: 1091 64 ...
- P2231 [HNOI2002]跳蚤(裴蜀定理/莫比乌斯反演)
P2231 [HNOI2002]跳蚤 给定一个长度为n+1的一列数,第n+1位为m,前n位小于m 求解使得他n+1个数的加减可以凑出1的方案数 首先可以凑出1,这显然是裴蜀定理,推一推就发现他要求所有 ...
- [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)
[LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相 description solution 一个到所有节点距离和最小的节点 ⇔\Leftrightarrow⇔ 树的重心(满足最重的儿 ...
最新文章
- sdio接口_多种接口的谷歌Coral模块,总有一款适合您~
- 一个SQL的几种写法
- 爱奇艺java 架构师_爱奇艺个性化实时推荐系统整体流程图 拿去细品
- 推荐系统 embedding 技术实践总结
- translateZ 带来的Z-index 问题
- [css] css常用的布局方式有哪些?
- 异常处理:try-catch-finally与throws的区别及使用情况
- thinkphp ajax 无刷新分页效果的实现
- 【导航仿真】基于matlab GUI PSINS导航仿真【含Matlab源码 1496期】
- 明解c语言入门篇第三版第九章答案,明解C语言 入门篇 第一章答案
- Qt基于FFmpeg解码本地视频后再编码
- C#今日头条推荐新闻爬取
- python打印N*N乘法表
- 台式计算机能分享热点吗,如何在电脑上开热点 台式电脑开热点的方法有哪些...
- 《快速上手ARM体系结构》网易公开课
- PID控制器的优缺点和周期
- 大型传统企业的数字化创新之路
- 岁末忆今朝,辞旧话新潮——心灵与技术的聚合
- Compound学习(二) 简单部署
- U.K. Considers Giving RBS Bailout Leeway