PAT 1015 Reversible Primes

来源:互联网 发布:金融分销系统源码 编辑:程序博客网 时间:2024/05/19 00:13

1015. Reversible Primes (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.

Now given any two positive integers N (< 105) and D (1 < D <= 10), you are supposed to tell if N is a reversible prime with radix D.

Input Specification:

The input file consists of several test cases. Each case occupies a line which contains two integers N and D. The input is finished by a negative N.

Output Specification:

For each test case, print in one line "Yes" if N is a reversible prime with radix D, or "No" if not.

Sample Input:
73 1023 223 10-2
Sample Output:
YesYes

No

#include <iostream>#include <string.h>#include <stdlib.h>#include <algorithm>#include <math.h>#include <stdio.h>#include <queue>using namespace std;int n,d;int bin[105];bool judge(int x){  if(x==1||x==0) return false;  if(x==2) return true;  for(int i=2;i*i<=x;i++)  {    if(x%i==0)      return false;  }  return true;}void fun(int x,int d){  int cnt=0;  while(x>=d)  {    bin[cnt++]=x%d;    x/=d;  }  if(x>0)    bin[cnt++]=x;  int num=0;  for(int i=0;i<cnt;i++)  {    num*=d;    num+=bin[i];  }  if(!judge(num))    printf("No\n");  else    printf("Yes\n");}int main(){  while(scanf("%d",&n)!=EOF)  {    if(n<0)      break;    scanf("%d",&d);    if(!judge(n))    {      printf("No\n");      continue;          }    fun(n,d);  }  return 0;}


0 0