现在给出一个n,你要找出1-n之间的特殊回文素数个数 这个特殊回文素素数满足三点:

1、 只由1-9组成,并且每个数最多不出现k次,如13,23,1289。

2、 位数从高到低为不严格递减或不严格递增(即带等于的关系)。

3、 要求数字为回文数。

4、 数字为素数(质数)。

请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。

输入描述:

输入一行n,k(1 <= n <= 1e3 ,1 <= k <= 2)

输出描述:

输出一行答案为特殊回文素数个数

示例1 输入 复制 5 1 输出 复制 3 说明 2,3,5为回文素数,且每个数均出现一次

所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数。

对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文素数。下面列出两位和三位整数中包含的所有回文素数。

两位回文素数:11

三位回文素数:101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929三位的回文素数都不满足题意说的严格递增,严格递减 //我理解错题意了,我把1-n的素数找到,又按照题上这句话找到素数的回文数,又去判断这个回文数是不是特殊回文数,还不如没有。

//方法二 n<10 回文素数有4个 
//      10<=n<=100  回文素数有1个   11
//      n>100       3位回文数15个 
#include <iostream>
using namespace std;
int main()
{
    int n,k,ans=0;
    cin>>n>>k;
    if(n>=2) ans++;
    if(n>=3) ans++;
    if(n>=5) ans++;
    if(n>=7) ans++;
    if(n>=11&&k==2) ans++; 
        //三位回文素数:101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929
       //三位的回文素数都不满足不严格递增或不严格递减   
    cout<<ans;
    return 0;
}
#include <iostream>
using namespace std;
int a(int n,int k)   //判断出现的次数
{
    if(n<10) return 1;
    else if(n<100) {
        int cnt1=n%10,cnt2=n/10;
        if(k==1&&cnt1==cnt2) return 0;
        return 1;
    }
    else {
        int cnt1=n%10,cnt2=n/10%10,cnt3=n/100;
        if(k==1&&(cnt1==cnt2||cnt2==cnt3||cnt1==cnt3)) return 0;
        else if(k==2&&cnt1==cnt2&&cnt2==cnt3) return 0;
        return 1;
    }
}
int  b(int n)    //判断不严格递增或不严格递减
{
    if(n<100) return 1;
    else {
        int cnt1=n%10,cnt2=n/10%10,cnt3=n/100;
        if(cnt1<=cnt2&&cnt2<=cnt3||cnt1>=cnt2&&cnt2>=cnt3) return 1;
        return 0;
    }   
}
int  c(int n)  //判断回文
{
    if(n<10) return 1;
    else if(n<100) {
        int q=n%10,w=n/10;
        if(q==w) return 1;
        return 0;
    }
    else {
       int cnt1=n%10,cnt2=n/10%10,cnt3=n/100;
        if(cnt1==cnt3) return 1;
        return 0;
    }
}
int  d(int n)  //判断素数
{
    if(n<2) return 0;
    else if(n==2) return 1;
    else
    {
        for(int i=2;i*i<=n;i++)
            if(n%i==0) return 0;
    }
    return 1;
}
int main()
{
    int n,k,ans=0;
    cin>>n>>k;
    for(int i=1;i<=n;i++) {
        if(a(i,k)&&b(i)&&c(i)&&d(i)){
        ans++;
       // cout<<i<<endl;
        }
    }
        
    cout<<ans;
    return 0;
}
print('Hello world!')