您的位置:首页 > 其它

第五届图灵杯1855

2017-12-03 22:39 337 查看

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;
else
cout<<"escape"<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: