第五届图灵杯1855

来源:互联网 发布:英语课上配音软件 编辑:程序博客网 时间:2024/06/14 14:23

1855: 逃出生天

描述

题目描述:

gold学长从昏迷中醒来以后发现自己被困在一个山洞里,他找了很久,终于找到一个门。门上写着:想要逃出去,只有一个办法 你可以选择一个数n,设m=1 * 2 * ... * (n-1)。如果m是n的倍数,那么门就会自动打开,否则你就别想出去了。 gold学长内心充满了绝望,他想了一些数,但他不知道这些数能不能保证自己逃出去。你能帮助gold学长逃出生天吗?

输入:

第一行一个数T(T<=1000),表示gold学长想的数的个数 接下来每一行一个数n(2<=n<=1e8),表示gold学长想的数

输出:

每行一个输出 对于每一个数,如果学长能逃出去,则输出“escape”(不含引号),否则输出“trapped”(不含引号)

样例输入
4
5
6
7
8
样例输出
trapped
escape
trapped

escape

看似一道签到题,嗯,也不难,但是A了好久,

实质就是判断是不是素数,当然,有一个坑,

4需要特判。

#include<bits/stdc++.h>using namespace std;bool isPrime_3( int num )  {      //两个较小数另外处理      if(num ==2|| num==3 )      return 1 ;      //不在6的倍数两侧的一定不是质数      if(num %6!= 1&&num %6!= 5)      return 0 ;      int tmp =sqrt( num);      //在6的倍数两侧的也可能不是质数      for(int i= 5;i <=tmp; i+=6 )      if(num %i== 0||num %(i+ 2)==0 )      return 0 ;      //排除所有,剩余的是质数      return 1 ;  } int main(){int t;cin>>t;while(t--){int n;cin>>n;if(n == 4)cout<<"trapped"<<endl;else{if(isPrime_3(n))cout<<"trapped"<<endl;elsecout<<"escape"<<endl;}}return 0;}  


原创粉丝点击