zoukankan      html  css  js  c++  java
  • 【XR-3】小道消息 (Comet OJ

    题目描述

     

    小 X 想探究小道消息传播的速度有多快,于是他做了一个社会实验。

    有 nn 个人,其中第 ii 个人的衣服上有一个数 i+1i+1。小 X 发现了一个规律:当一个衣服上的数为 ii 的人在某一天知道了一条信息,他会在第二天把这条信息告诉衣服上的数为 jj 的人,其中 gcd(i,j)=1gcd(i,j)=1(即 i,ji,j 的最大公约数为 11)。在第 00 天,小 X 把一条小道消息告诉了第 kk 个人,小 X 想知道第几天时所有人都会知道这条小道消息。

    可以证明,一定存在所有人都知道了这条小道消息的那一天。

    提示:你可能需要用到的定理——伯特兰-切比雪夫定理

     
     

    输入描述

     

    一行 22 个正整数 n,kn,k。

    数据范围:

    • 2 le n le 10^{14}2n1014。
    • 1 le k le n1kn。

    输出描述

     

    一行一个正整数,表示答案。

    样例输入 1 

    3 1
    

    样例输出 1

    2
    

    样例输入 2 

    6 4
    

    样例输出 2

    1
    

    提示

    【样例 11 说明】

    33 个人的衣服上的数分别为2 3 4

    在第 00 天,小 X 把一条小道消息告诉了第 11 个人,他的衣服上的数为2

    在第 11 天,第 11 个人会告诉第 22 个人,因为 gcd(2,3) = 1gcd(2,3)=1,但他不会告诉第 33 个人,因为 gcd(2,4) = 2 e 1gcd(2,4)=2=1。

    在第 22 天,第 22 个人会告诉第 33 个人,因为 gcd(3,4) = 1gcd(3,4)=1,这时所有人都知道了这条小道消息,因此答案为 22。

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <map>
    #include <vector>
    #include <set>
    #include <queue>
    #include <stack>
    #include <cmath>
    using namespace std;
    #define lli long long 
    #define pq priority_queue<int>
    #define pql priority_queue<ll>
    #define pqn priority_queue<node>
    #define v vector<int>
    #define vl vector<ll> 
    #define read(x) scanf("%d",&x)
    #define lread(x) scanf("%lld",&x);
    #define pt(x) printf("%d
    ",(x))
    #define yes printf("YES
    ");
    #define no printf("NO
    ");
    #define gcd __gcd
    #define out(x) cout<<x<<endl;
    #define over cout<<endl;
    #define rep(j,k) for (int i = (int)(j); i <= (int)(k); i++)
    #define input(k) for (int i = 1; i <= (int)(k); i++)  {scanf("%d",&a[i]) ; }
    #define mem(s,t) memset(s,t,sizeof(s))
    #define ok return 0;
    #define TLE std::ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    #define mod(x) ((x)%9973)
    #define test cout<<"     ++++++      "<<endl;
    //二叉树 
    #define lson rt<<1, l, m
    #define rson rt<<1|1, m+1, r
    //线段树
    #define ls now<<1
    #define rs now<<1|1 
    const int inf = 1e5+5;
    lli a[inf];
    int prime(lli k)
    {
        if(k==1) return 0;
        for(lli i=2;i<=sqrt(k);i++)
            if(k%i==0) return 0;
        return 1;
    }
    int main()
    {
        lli t,n,m,k;
        while(cin>>n>>m)
        {
            if(2*(++m)>(++n) && prime(m)) cout<<1<<endl;
            else cout<<2<<endl;
        }
        
        ok;
    }
    所遇皆星河
  • 相关阅读:
    Python 实现AEC CBC 加密解密方式
    redis 发布订阅方法与缺陷
    python paramiko 传输下载文件
    Redis 配置文件
    Redis 命令
    window11 | 虚拟机vmWare安装windows11
    十万个为什么 | 文化001-为什么猜灯谜又叫做打灯谜
    ffmpeg | 常用命令使用
    ffmpeg | 常用命令使用
    Adobe系列 | Animate(01)-软件安装
  • 原文地址:https://www.cnblogs.com/Shallow-dream/p/11478689.html
Copyright © 2011-2022 走看看