佛塔宝珠c++
题目描述
九头虫偷了祭赛国的舍利子,藏进了宝塔,悟空现在要去找到舍利子,才能顺利过关,已知:
1.舍利子藏在了这座宝塔的某一层,悟空从第0层开始搜索。
2.上一层塔需要6s,下一层塔需要4s,搜索一层需要5s
3.悟空要搜索n个楼层,需要按照给定的楼层顺序依次搜寻
4.若达到某一层搜寻结束所用的总时间数再加上当前楼层数为素数,则认为舍利子很有可能出现在该层,计算并输出这座宝塔中所有可能的层数,以空格隔开,若没有则输出No。
输入
两行,第一行一个整数n,表示待搜索的楼层数量,第二行n个整数,表示搜索的楼层编号
输出
一行,若干个整数,分别表示舍利子可能出现的楼层数(即到达某一层搜索结束所用的总时间数与楼层数之和为素数),无符合条件的楼层,则直接输出No
样例输入 复制
3
2 3 1
样例输出 复制
2 3
代码:
#include<iostream>
#include<math.h>
using namespace std;
int n,c[1000];
int isPrime(int n)
{
for (int i=2; i<=sqrt(n); i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>c[i];
}
int time1 = 0,v = 0;
for(int i=1;i<=n;i++){
if(c[i]>=c[i-1]){
for(int j=c[i-1];j<c[i];j++){
time1+=6;
}
}else{
for(int j=c[i];j>c[i-1];j--){
time1+=4;
}
}
time1+=5;
if(isPrime(time1+c[i])){
cout<<c[i]<<" ";
v++;
}
}
if(v==0){
cout<<"No";
}
return 0;
}