Primes or Palindromes? CodeForces

来源:互联网 发布:2017nba总决赛欧文数据 编辑:程序博客网 时间:2024/06/15 14:18

http://codeforces.com/problemset/problem/569/C

神奇的暴力,注意大数相乘可能爆ll

#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>typedef long long ll;using namespace std;const int maxn=9900000;int prime[maxn+10],para[maxn+10];ll sum_pri[maxn+10],sum_para[maxn+10];void init(){for(int i=1;i<=maxn;i++)  prime[i]=1;prime[1]=0;for(int i=2;i<=maxn;i++){if(prime[i]){for(int j=i+i;j<=maxn;j+=i)prime[j]=0;}}int tmp=0;for(int i=2;i<=maxn;i++){if(prime[i])    tmp++;sum_pri[i]=tmp;}//printf("1****\n");for(int i=1;i<=9;i++)   para[i]=1;for(int i=10;i<=maxn;i++){int str[10];int tmp=i;int cnt=0;while(tmp){str[cnt++]=tmp%10;tmp/=10;}cnt--;int j=0,k=cnt;while(j<k){if(str[j]==str[k])j++,k--;elsebreak;}if(j>=k)  para[i]=1;}tmp=0;for(int i=1;i<=maxn;i++){if(para[i])tmp++;sum_para[i]=tmp;}}int main(){init();//printf("****\n");//printf("\n");ll p,q;scanf("%lld %lld",&p,&q);int ans=1;for(int i=1;i<=maxn;i++){if(q*sum_pri[i]<=p*sum_para[i]){ans=i;}}printf("%d\n",ans);return 0;}


阅读全文
0 0