[1008]harder_prime

素数定义:一个大于1的整数,如果它的约数如果只有1和它本身,那么它就是一个素数。

回文数定义:一个整数把它的各位数字倒过来还是它本身,那么它就是回文数,比如说2,99,393。

回文素数定义:一个数如果既是素数,也是回文数,那么我们就称它为回文数,比如说:7,11,131。

现在我们有n个数,需要你判断它们是不是回文素数。

【输入格式】

第一行仅一个数n(n<100),为要判断的数的个数。

接下来n行,每行有一个数x(x<1,000,000,000),即为要你判断的数。

【输出格式】

共有n行,每行有一个单词,对于每个x,如果x是回文素数,则输出“Yes”,否则输出“No”(不包括引号,注意大小写)。

【输入样例】

3

7

12

121

【输出样例】

Yes

No

No

【数据范围】

40%的数据:n<=10,x<1,000

70%的数据:n<=50,x<100,000

100%的数据:n<100,x<1,000,000,000

Hint

回文数的判断,质数的判断。

优化质数判断的算法。

我的

 1 #include<stdio.h>
 2 #include<math.h>//sqrt()需要用到这个头文件,莫忘!!!
 3 int main() {
 4     long long n, sum = 0, x, i;//long long的最大值:9223372036854775807
 5     int flag = 0, yu;//longlong的最小值:-9223372036854775808
 6     scanf("%lld", &n);//注意为%lld,经常忘记
 7     while (n--) {
 8         scanf("%lld", &x);
 9         long long zhong = sqrt(x);//本来想用x/2的,结果会超时,故用最正确的算法
10         for (i = 2; i <= zhong; i++) {
11             if (x % i == 0) {
12                 flag = 1;
13                 break;
14             }
15         }
16         for (i = x; i != 0; i /= 10) {//将数字颠倒过来的办法
17             yu = i % 10;
18             sum = sum * 10 + yu;
19         }
20         if (sum != x)
21             flag = 1;
22         if (flag == 0)
23             printf("Yes\n");
24         else
25             printf("No\n");
26         flag = 0;
27         sum = 0;
28     }
29     return 0;
30 }

求解回文数的算法:

一个整数把它的各位数字倒过来还是它本身,所以主要是将数字倒过来

比如你输入的数是12321:
循环开始前:m=12321,sum=0;
第1次循环结束:m=1232,sum=1;
第2次循环结束:m=123,sum = 12;
第3次循环结束:m=12,sum=123;
第4次循环结束:m=1,sum=1232;
第5次循环结束:m=0,sum=12321。
输入的是几位数就循环几次。
判断的思路就是,通过循环依次把m的个位,十位,百位...上的数取出来,与sum*10相加。这样得到的数sum就是m颠倒之后的数,如果两者相等,那就是回文数

时间: 2024-08-05 02:32:09

[1008]harder_prime的相关文章

1008. 数组元素循环右移问题 (20)

1008. 数组元素循环右移问题 (20) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 A1--AN-M-1)(最后M个数循环移至最前面的M个位置).如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100).M(M>=0):第2行输入N个整数,之间用空格

杭电女生赛1001 1002 1003 1005 1008 hdu6023 6024 6025 6027 6030

代码先贴这里 #include "iostream" #include "string.h" #include "stack" #include "queue" #include "string" #include "vector" #include "set" #include "map" #include "algorithm&quo

问题 1008: C语言程序设计教程(第三版)课后习题5.6

/******************************************************************** @file Main.cpp @date 2017-5-8 @author Zoro_Tiger @brief 问题 1008: C语言程序设计教程(第三版)课后习题5.6 http://www.dotcpp.com/oj/problem1008.html ***************************************************

1008 Envy

1008: Envy 时间限制: 1 Sec  内存限制: 128 MB提交: 288  解决: 61[提交][状态][讨论版] 题目描述 今年的 ACM 比赛推出了一个赛后的娱乐活动,所有参赛选手排成一排玩击鼓传花,关于击鼓传花的玩法是这样的:  数人或几十人围成圆圈坐下,其中一人拿花(或一小物件):另有一人背着大家或蒙眼击鼓(桌子.黑板或其他能发出声音的物体),鼓响时众人开始依次传花,至鼓停止为止.此时花在谁手中(或其座位前),谁就上台表演节目(多是唱歌.跳舞.说笑话:或回答问题.猜谜.按纸

2016大连网络赛 1008 &amp; hdu5875 (优先队列+离线)=不确定暴力

题意:给你一个区间,求a_l%a_(l+1)%a_(l+2)%-%a_r 的值 分析:听说一个数在给定区间中只有不是很多的位置可一连续对它求模,所以想到一个比较暴力有可行的方法,猜想复杂度应该是nlogn.具体是这样的,从左到有枚举每个位置, L[]记录[1,r]中所有元素连续取模到r的值.一开始把a[1]加进优先队列pq,对于第二位置,若pq.top()>=a[i],取出并取模,然后更新对应的位置l的答案,并把取模后答案插入优先队列,然后处理有区间是2的所有询问.对于第i个位置,若pq.top

[2016-05-09][51nod][1008 N的阶乘 mod P]

时间:2016-05-09 21:21:54 星期一 题目编号:[2016-05-09][51nod][1008 N的阶乘 mod P] 题目大意:输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %) 分析:直接算- #include<stdio.h> using namespace std; typedef long long ll; int main(){ ll n,p,ans = 1; scanf("%lld%lld",&n,&

Light 1008

H - 字 Time Limit:500MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1008 Description Fibsieve had a fantabulous (yes, it's an actual word) birthday party this year. He had so many gifts that he was actually

ZOJ 1008 Gnome Tetravex (DFS + 剪枝)

Gnome Tetravex 题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=8 题意:有N*N个方格,每个方格分为上下左右四个部分,每个部分填数字.现在要求重排方块,使得每两个有边相连的方块对应的数字相同. 思路:就是一个简单的搜索,我想了个剪枝,将上下左右四个方向上每个数字对应的是哪几个方块记录下来,但是这个剪枝并没有起很大的作用,还是T了.后来才发现,如果有很多个方块是相同的,会重复搜索,所以需要将相同的方块一起处

BZOJ 1008: [HNOI2008]越狱 组合数学

原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1008 题解: 就很傻逼的组合数学啊... $$ans=M^N-M*(M-1)^{(N-1)}$$ 代码: /************************************************************** Problem: 1008 User: HarryGuo2012 Language: C++ Result: Accepted Time:0 ms Memo