zoukankan      html  css  js  c++  java
  • goj 来自不给标题的菜鸟出题组(巴什博弈+素数判定)

    Problem Description:

    大B和小b合作出一道程序设计月赛的题,他们的想法是给定一个N,输出与N相邻的一个素数,但就输出比N小的素数还是输出比N大的素数上,他们出现了分歧。大B觉得应该输出比N大的素数,小b觉得应该输出比N小的素数。于是他们决定,通过一个小游戏,决定输出,谁胜听谁的。
    游戏规则:
    1、有N支笔;
    2、两人轮流取(不能不取);
    3、每次可以取1到5支笔;
    4、取走最后支笔的为胜者;
    大B决定每一局都让小b先取,游戏的双方使用的都是最优策略。
    

    Input:

    输入包含多组数据
    对于每组数据,输入占一行,为一个正整数N(3<=N<=1e7)

    Output:

    输出与N相邻的一个素数,输出占一行

    Sample Input:

    13
    119
    9996
    

    Sample Output:

    11
    113
    10007
    Tips:
    1、N等于13时,小b赢得游戏,输出比13小的相邻的素数;
    2、N等于119时,小b赢得游戏,输出比119小的相邻的素数;
    3、N等于9996时,大B赢得游戏,输出比9996大的相邻的素数。
    解题思路:简单的巴什博弈+简单判断素数,水过!
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 bool isprime(int x){
     4     for(int i=2;i*i<=x;++i)
     5         if(x%i==0)return false;
     6     return true;
     7 }
     8 int main(){
     9     int n;
    10     while(~scanf("%d",&n)){
    11         if(n%6){
    12             for(int i=n-1;i>1;--i)
    13                 if(isprime(i)){printf("%d
    ",i);break;}
    14         }
    15         else{
    16             for(int i=n+1;;++i)
    17                 if(isprime(i)){printf("%d
    ",i);break;}
    18         }
    19     }
    20     return 0;
    21 }
  • 相关阅读:
    【Thinking in Java, 4e】初始化与清理
    【Thinking in Java, 4e】控制流程执行
    【Beginning Python】抽象(未完)
    【Python】装饰器 & 偏函数
    【c++ primer, 5e】函数声明 & 分离式编译
    【Python】闭包 & 匿名函数
    【c++ primer, 5e】【函数基础】
    【Python】高阶函数
    变相的取消Datagridview控件的选中状态
    NotifyICon控件使用
  • 原文地址:https://www.cnblogs.com/acgoto/p/9169427.html
Copyright © 2011-2022 走看看