题目:戳这里
题意:给一个数的十进制值n和这个数的进制d,求该数转化为d进制后的reverse和该数本身是否都是质数。
解题思路:感觉这题题意没讲清楚,我对着样例猜的题意。知道题意就简单了,对着题意直接写即可。
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <cmath>
using namespace std;
typedef long long ll;
const int maxn = 1e3 + 10;
const int inf = 0x3f3f3f3f;
int getY(int n, int d) {
int y = 0;
while(n) {
y = y * d + n % d;
n /= d;
}
return y;
}
int getX(int n, int d) {
if(n == 0) return 0;
return getX(n / d, d) * d + n % d;
}
bool isPrim(int x) {
if(x < 2) return false;
for(int i = 2; i <= sqrt(x); ++i) {
if(x % i == 0) {
return false;
}
}
return true;
}
int main() {
int n, d;
while(scanf("%d", &n)) {
if(n < 0) break;
scanf("%d", &d);
int x = getX(n, d), y = getY(n, d);
if(isPrim(x) && isPrim(y)) puts("Yes");
else puts("No");
}
return 0;
}