题解:UVA12802 Gift From the Gods

· · 题解

题意

输入一个数 a,输出它的两倍。

如果 a 既是质数又是回文数,那么就停止输入。

思路

暴力出奇迹,骗分过样例。

一道暴力题。

输出自然简单。(就是输出两倍而已),重要的是判断它是否是回文质数。

质数判断很简单,不过注意,只能枚举到 \sqrt{n},不然会超时。

判断回文数就是把这个数倒过来,判断与原数是否相等。

具体的就看代码吧。

代码

#include<bits/stdc++.h>
using namespace std;
int a;
bool check_prime(int x){//判断素数,模版
      if(x<=1)return false;
      for(int i=2;i<=sqrt(x);i++)if(x%i==0)return false;
      return true;
}
bool check_huiwen(int x){//判断回文
      int x1=0,bf=x;
      while(bf){//升位组数
          x1+=bf%10;
          bf/=10;
          x1*=10;
      }
      return (x1==x);
}
int main(){
    while(true){
        scanf("%d",&a);//输入
        printf("%d\n",a*2);//注意要先输出
        if(check_prime(a)&&check_huiwen(a))break;//判断结束条件
    }
    return 0;
}