首页 > 代码库 > PAT 1015. Reversible Primes
PAT 1015. Reversible Primes
#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>using namespace std;void init_primes(vector<char>& primes) { int len = primes.size(); for (int i=0; i<len && i<2; i++) primes[i] = false; if (len < 3) return; primes[2] = true; for (int i=2; i<len; i++) { if (!primes[i]) continue; int v = i * 2; while (v < len) { primes[v] = false; v += i; } } }int inv_value(int n, int radix) { int base = 1; int v = 0; int r = 0; vector<int> rs; while (n) { r = n % radix; n = n / radix; rs.push_back(r); } for (int i=rs.size() - 1; i>=0; i--) { v += rs[i] * base; base *= radix; } return v;}int main() { const int MAX_N = 100000; vector<char> primes(MAX_N + 1, true); init_primes(primes); int num, radix; for (;;) { scanf("%d", &num); if (num < 0) break; scanf("%d", &radix); if (!primes[num]) { printf("No\n"); continue; } int iv = inv_value(num, radix); if (!primes[iv]) { printf("No\n"); } else { printf("Yes\n"); } } return 0;}
每日一练
PAT 1015. Reversible Primes
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。