当前位置 博文首页 > Keven_11的博客:C++题解:蒜头君爱数数
???目录
题目?
题解
蒜头君在数学课上学习了素数,在信息课上学习了回文数,她现在很想知道,对于区间?[L,R]?,其中有多少个数既是素数又是回文数
输入格式
第一行两个整数分别表示?L,R
输出格式
一个整数表示有多少个数满足条件
数据范围
对于?20%?的数据,L=R
对于?50%?的数据,L≤R≤103
对于?100%?的数据,L≤R≤10?
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为?
count.in
,输出文件为?count.out
样例输入复制
7 11样例输出复制
2题解:
知识点:枚举
分析:题目比较简单,最普通的枚举。先判断此数是否是回文串再判断是否是质数时间复杂度更低一些,因为质数常有而回文数不常有【引经据典,哈】
代码:
cs#include<iostream> #include<cstdio> #include<cmath> #define _for(i,a,b) for (int i=(a);i<=(b);i++)//更方便 using namespace std; int reverse(int x){//返回其回文串 int ans=0;//注意初始化 while (x){ ans=ans*10+x%10; x/=10; } return ans; } bool is_prime(int a){//判断是否属质数 int m=sqrt(a); for (int i=2;i<=m;i++){ if (a%i==0){ return false; } } return true; } int main(){ freopen("count.in","r",stdin); freopen("count.out","w",stdout); int l,r,ans=0; scanf("%d%d",&l,&r); _for(i,l,r){ if (reverse(i)==i && is_prime(i)){//判断 ans++; } } printf("%d\n",ans); return 0; }
下一篇:没有了