[PAT A1015]Reversible Primes
题目描述
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. 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. For each test case, print in one line Yes if N is a reversible prime with radix D, or No if not. 73 10 Yes 题目不算复杂,题意就是输入N组数,第一个数是十进制数n,第二个数是进制d,直到遇到一个输入的数为负数为止,如果n是素数,且n在d进制下的翻转后的数,在十进制下也是素数,那么输出Yes,否则输出No。例如:n=23 d=2,23在2进制下式10111,翻转是11101=29,这两个数都是素数,所以输出Yes 感谢评论区“遗弃”的提醒,这里使用的int数据类型存储二进制结果,由于int类型最大是2147483647,也就是只有10位,所以最多只能存储10位二进制数,这个二进制数是很小的,题目给的测试点很有可能会超,各位在做题的时候也要注意这些细节,即最好使用int 数组来存放结果!
Now given any two positive integers N (<105) and D (1输入格式
输出格式
输入样例
23 2
23 10
-2输出样例
Yes
No解析
我的做法是使用trans函数求出另一个数,并判断他们两个数是否都是素数,我是使用string写的函数,但是我写的trans函数最后一组数据老是过不了,debug了好久还是无果,希望有大神看到了能帮我找找错,或者告诉我最后一组数据的值是多少,感激不尽。
我写的trans函数:int trans(int n,int r)
{int temp = 0, ans = 0;do {temp = temp * 10 + n%r;n /= r;} while (n != 0);string str = to_string(temp);for (int i = 0; i < str.length(); i++) ans = ans * r + str[i] - '0';return ans;
}
后来我是使用了柳神的方法重写了trans函数过掉了最后一组数据:#include水平有限,如果代码有任何问题或者有不明白的地方,欢迎在留言区评论;也欢迎各位提出宝贵的意见!