洛谷 P5535 【XR-3】小道消息
提示
你可能需要用到的定理——伯特兰-切比雪夫定理。
对于所有大于1的整数n,至少存在一个质数p,符合n < p < 2n。
而k+1≥2,满足条件,所以就分情况讨论即可
分析
①当k+1为质数,且(n+1)/2<k+1≤n+1 因为 2~n+1 没有数为它的倍数,即任何数与它互质,所以只需要一天即可
②当k+1为质数,且k+1≤(n+1)/2 在2~n+1中,一定有k+1的倍数,所以,第一天消息传给了不是k+1的倍数的所有数,由伯特兰-切比雪夫定理可得 ,在(n+1)/2~n+1之间,一定存在一个质数p,不是k+1的倍数,且与所有数互质,回到情况①。所以,在第二天,k+1的倍数也全都收到了消息,需要两天。
③当k+1为合数 在第一天,消息传给了不是(k+1)倍数和约数的数,由伯特兰-切比雪夫定理可得 ,在(n+1)/2~n+1之间,一定存在一个质数p,不是(k+1)倍数和约数,且与所有数互质所以回到了第①种情况,则第二天,k+1的倍数和约数的数也都收到了消息,需要两天
注意
① 2≤n≤10^14,要开long long
②由题意得,n和k要+1
#include<bits/stdc++.h> using namespace std; long long n,k; bool sushu(long long x){ long long ans=sqrt(x); for(int i=2;i<=ans;i++) if(x%i==0) return false; return true; }//判断是否为质数 int main(){ scanf("%lld%lld",&n,&k); n+=1,k+=1; if(sushu(k)){ if(k>n/2) printf("1\n");//对应第①种情况 else printf("2\n");//对应第②种情况 } else printf("2\n");//对应第③种情况 return 0; }
本文作者:Aurora-JC
本文链接:https://www.cnblogs.com/jiangchen4122/p/15886840.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步