Time Limit: 2000/1000ms (Java/Others)
Problem Description:
131号是一个主回文,因为它是一个素数和一个回文(当向后读时,它是相同的数字)。编写一个程序,计算两个提供的数字a和b (5 <= a <= 10 ^ 8)范围内的主回文数; a和b都被认为在范围内。例如,范围5-120包含3个主要回文(5,7,11,101)。
Sample Output:
34 解题思路:这道题跟杭电hdu1431一样,链接-->,只不过这里要求输出区间回文素数的个数。 AC代码:
1 #include 2 #define maxn 9999999 3 using namespace std; 4 bool isp[maxn];int a,b,num; 5 bool is_palindrome(int n){ //判断回文函数 6 int sum=0,tmp=n; 7 while(tmp){sum=sum*10+tmp%10;tmp/=10;} 8 if(sum==n)return true; 9 else return false;10 }11 int main(){12 memset(isp,true,sizeof(isp));13 isp[0]=isp[1]=false;14 for(int i=4;i >a>>b){21 num=0;22 for(int i=a;i<=b;i++){23 if(i>=maxn)break;24 if(isp[i]&&is_palindrome(i))num++;25 }26 cout< <