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