#define N 1200050
#define M 100005
#define maxn 205
#define MOD 1000000000000000007
int n,np[N],hp[N],num[30],nn;
bool pri[N];
int isHp(int x){
int xx = x;
nn = 0;
while(x){
num[nn++] = x % 10;
x/=10;
}
for(int i = 0;i<nn/2;i++){
if(num[i] != num[nn - 1 - i]) return 0;
}
//printf("%d ",xx);
return 1;
}
void init(){
fill(pri,true);
for(int i =2;i<N;i++){
if(pri[i]){
for(int j = i + i;j<N;j+=i){
pri[j] = false;
}
}
}
np[0] = np[1] = 0;
for(int i = 2;i<N;i++){
np[i] = np[i-1];
if(pri[i]) np[i]++;
}
hp[0] = 0;
for(int i = 1;i<N;i++){
hp[i] = hp[i-1] + isHp(i);
}
//for(int i =0;i<100;i++)
//int i = N - 1;
//{
// printf("%d %d %f\n",np[i],hp[i],(double)np[i]/(double)hp[i]);
//}
}
int main()
{
init();
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int p,q;
//printf("%d %d \n",np[0],hp[0]);
while(S2(p,q)!=EOF)
{
bool flag = true;
for(int i = N - 1;i >= 0 && flag;i--){
if(q * np[i] <= p * hp[i]){
flag = false;
printf("%d\n",i);
}
}
if(flag){
printf("Palindromic tree is better than splay tree\n");
}
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
大规模