【XR-3】小道消息(数论)

【XR-3】小道消息(数论)
【XR-3】小道消息(数论)
这道题刚开始我真没读懂,后面才发现这个意思:
第0天传给第k个人,然后第k个人在第一天传给所有与它互质的人;如果能传递完那么就是一天就结束了;如果不能传递完那么就需要两天;为什么呢?因为这里用到了一个数论结论:
如果第k个人对应的k+1这个数是个素数,那么如果它的两倍超过了n+1那么肯定其他数与它互质;比如2 3 4 5 6,k=4那么5与其他都互质,所以传递只需要一天就完了,其实也可以这样理解;如果这个数本来就是质数了那么必定它的二倍才和他不是互质的;那么其余情况就是除了与k+1互质的数第一天收到消息,然后再从收到消息的数中去传递给与他们互质的数;那么就只需要两天,这里可以举个栗子:
2 3 4 5 6,k=3时那么第一天传给3 ,5,那么第二天3,5分别传给2,6。所以只需要两天;所以这道题就出来了:

#include<iostream>
using namespace std;
bool is(long long n)
{
  for(long long i=2;i*i<=n;i++){//判断素数
    if(n%i==0)return false;
    }
    return true;
  }
int main(){
  long long n,k;
  cin>>n>>k;
  if(is(k+1)&&(k+1)*2>(n+1))cout<<1;//如果是素数,并且它的两倍大于了范围,那么肯定其他数与它都互质
  else cout<<2;//这里就是其余情况
  return 0;
}
上一篇:题解 P5436 【XR-2】 缘分


下一篇:SVN 检出操作