PAT 1015 Reversible Primes (20分) 谜一般的题目,不就是个进制转换+素数判断
题目
A 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 10
23 2
23 10
-2
Sample Output:
Yes
Yes
No
题目大意
说实在的,这个题目看到我吐血,谷歌翻译都都翻译不出来他想要的效果,我在找了好几篇博客之后看到的结论都是这个样子:
A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime.
就是说,可逆素数: 在十进制下,N是个素数,且在D进制下的数值倒过来后,再转成十进制,还是个素数。
反正我是真的从这个英文中看不出来这个意思。
题目就是:给出 N, 进制 D,输出 N 是否是 可逆素数。
思路
- 编写判断十进制数是否是素数的方法(for循环进行到它开根号就可以了)
for (int i = 2; i <= sqr; ++i)
if (n % i == 0) return false;
先判断
N是否是 素数,若不是,直接输出No结束。求得
N在D进制下的反转后的结果,用一个数组保存。比如
123在十进制下 反转后是321(就算只有1位或者是0也要进行一次,所以用do while)- n 对10
取余得到3,3写进数组第一个位置; - n = n / 10 = 12;
- 重复上面的步骤
- n 对10
把反转后的数字转成
十进制再判断是否是素数。
// 转成十进制
for (int i = 0; i < len; ++i)
n = n * radix + arr[i];
代码
只要明白题目意思,也就没有什么难度。
#include <iostream>
#include <cmath>
using namespace std;
/**
* 这个题理解题目意思很重要
* A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime.
* 就是说,可逆素数: 在十进制下,N是个素数,且在D进制下的数值倒过来,再反转成十进制,还是个素数
* 反正我是真没看出来
*/
// 是否是素数
bool isprime(int n) {
if (n <= 1) return false;
int sqr = sqrt(n);
for (int i = 2; i <= sqr; ++i)
if (n % i == 0) return false;
return true;
}
int main() {
// 一个十进制的n,一个给定的进制D
int n, radix;
while (cin >> n) {
// 题意,最后一行只有一个负数,表示输入结束
if (n < 0) break;
cin >> radix;
// 首先n在十进制下要是个素数
if (!isprime(n)) {
cout<< "No" << endl;
continue;
}
// 得到在D进制下反转后的编码,如123在十进制下反转后是321
int len = 0, arr[20] = {0};
do {
arr[len++] = n % radix;
n = n / radix;
}while (n > 0);
// 转成十进制
for (int i = 0; i < len; ++i)
n = n * radix + arr[i];
// 如果转换之后的数字还是素数,那么它就是 可逆素数
cout<< (isprime(n) ? "Yes" : "No") << endl;
}
return 0;
}
PAT 1015 Reversible Primes (20分) 谜一般的题目,不就是个进制转换+素数判断的更多相关文章
- PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642
PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642 题目描述: A reversible prime in any n ...
- PAT 甲级 1015 Reversible Primes (20 分) (进制转换和素数判断(错因为忘了=))
1015 Reversible Primes (20 分) A reversible prime in any number system is a prime whose "rever ...
- PAT (Advanced Level) Practice 1015 Reversible Primes (20 分)
A reversible prime in any number system is a prime whose "reverse" in that number system i ...
- 1015 Reversible Primes (20 分)
A reversible prime in any number system is a prime whose "reverse" in that number system i ...
- 【PAT甲级】1015 Reversible Primes (20 分)
题意: 每次输入两个正整数N,D直到N是负数停止输入(N<1e5,1<D<=10),如果N是一个素数并且将N转化为D进制后逆转再转化为十进制后依然是个素数的话输出Yes,否则输出No ...
- PAT 1015 Reversible Primes[求d进制下的逆][简单]
1015 Reversible Primes (20)(20 分)提问 A reversible prime in any number system is a prime whose "r ...
- pat 1015 Reversible Primes(20 分)
1015 Reversible Primes(20 分) A reversible prime in any number system is a prime whose "reverse& ...
- PAT Advanced 1015 Reversible Primes (20) [素数]
题目 A reversible prime in any number system is a prime whose "reverse" in that number syste ...
- PAT 1015 Reversible Primes
1015 Reversible Primes (20 分) A reversible prime in any number system is a prime whose "rever ...
随机推荐
- windows下部署.netcore+docker系列二 (unbuntu 18.4 下 安装 docker)亲测!!!
1.卸载sudo apt-get remove docker docker-engine docker.io containerd runc2.更新sudo apt-get update3.安装依赖包 ...
- Spring Cloud 系列之 Sleuth 链路追踪(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Sleuth 链路追踪(一) 本篇文章讲解 Sleuth 基于 Zipkin 存储链路追踪数据至 MySQL,Elas ...
- Auth认证中的think_auth_rule type字段干嘛用的?
昨晚认真研究了一下这个类,设计的很巧妙,但是你说的这个字段,我认为应该是作者想加功能但还没写,在session判断的地方可以看到,type这个字段实际是对应的 1-实时验证,2登陆验证 ,显然,这个字 ...
- kubernetes1.30集群部署+dashboard+heapster
v2.1 1.系统配置 1.1.禁用防火墙.禁用selinux #防火墙禁用 systemctl stop firewalld systemctl disable firewalld #SELinux ...
- python教程(目录)
很早就想出一套python的零基础入门教程,各种原因一直没动手.今天立个flag,2020年一定完成这个目标. 入门篇 完全零基础的小白应该从这里看起. 一.计算机原理 这里不是要让大家去深入的学习计 ...
- 重识TCP/IP协议族与HTTP基础
不忘初心 砥砺前行, Tomorrow Is Another Day ! 本文概要: TCP/IP协议族的网络分层 TCP三次握手四次挥手 Http简介 报文结构 Http的请求方法及状态码 常用的H ...
- Swift-Realm数据库的使用详解
Swift-Realm数据库的使用详解 概述 Realm 是一个跨平台的移动数据库引擎,其性能要优于 Core Data 和 FMDB - 移动端数据库性能比较, 我们可以在 Android 端 re ...
- Windows 怎么启动 apache
在可执行目录下找到httpd.exe命令,然后运行cmd,执行类似以下命令:C:\"Program Files"\"Apache Software Foundation& ...
- 数学--数论--HDU - 6395 Let us define a sequence as below 分段矩阵快速幂
Your job is simple, for each task, you should output Fn module 109+7. Input The first line has only ...
- 数学--数论--HDU1576 A / B(逆元)
问题描述 要求(A / B)%9973,但由于A很大,我们只被告知n(n = A%9973)(我们给定的A必能被B整除,且gcd(B,9973)= 1). 输入项 数据的第一行是一个T,表示有T组数据 ...