CF 568A(Primes or Palindromes?-暴力推断)
3 seconds
256 megabytes
standard input
standard output
Rikhail Mubinchik believes that the current definition of prime numbers is obsolete as they are too complex and unpredictable. A palindromic number is another matter. It is aesthetically pleasing, and it has a number of remarkable properties. Help Rikhail to
convince the scientific community in this!
Let us remind you that a number is called prime if it is integer larger than one, and is not divisible by any positive integer other than itself and one.
Rikhail calls a number a palindromic if it is integer, positive, and its decimal representation without leading zeros is a palindrome, i.e. reads the same from left to right and right to left.
One problem with prime numbers is that there are too many of them. Let's introduce the following notation: π(n) — the number of primes
no larger than n, rub(n) —
the number of palindromic numbers no larger than n. Rikhail wants to prove that there are a lot more primes than palindromic ones.
He asked you to solve the following problem: for a given value of the coefficient A find the maximum n,
such that π(n) ≤ A·rub(n).
The input consists of two positive integers p, q,
the numerator and denominator of the fraction that is the value of A (,
).
If such maximum number exists, then print it. Otherwise, print "Palindromic tree is better than splay tree" (without the quotes).
1 1
40
1 42
1
6 4
172
能够发现不可能无解,极限情况n不大
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
typedef long long ll;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return (a-b+llabs(a-b)/F*F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
bool is_prime(int x)
{
if (x==1) return 0;
Fork(i,2,sqrt(x))
{
if (x%i==0) return 0;
}
return 1;
}
const int MAXN =10000000;
int P[MAXN],siz=0,b[MAXN]={0};
void make_prime(int n)
{
Fork(i,2,n)
{
if (!b[i])
{
P[++siz]=i;
}
For(j,siz)
{
if (P[j]*i>n) break;
b[P[j]*i]=1;
if (i%P[j]==0) break;
}
}
}
bool is_pal(int x)
{
char s[10];
sprintf(s,"%d",x);
int p=0,q=strlen(s)-1;
while(p<q) if (s[p]!=s[q]) return 0;else ++p,--q;
return 1;
} bool B[MAXN]={0};
bool make_pal(int n)
{
char s[20];
For(i,10000)
{ sprintf(s,"%d",i);
int m=strlen(s);
int p=m-1;
for(int j=m;p>-1;j++,p--) s[j]=s[p]; int x;
sscanf(s,"%d",&x);
if (x<=n) B[x]=1; for(int j=m;j<=2*m-1;j++) s[j]=s[j+1];
sscanf(s,"%d",&x);
if (x<=n) B[x]=1; }
} int main()
{
// freopen("A.in","r",stdin);
// freopen(".out","w",stdout);
int p,q;
cin>>p>>q;
make_prime(MAXN-1);
make_pal(MAXN-1);
int x1=0,x2=0,n=MAXN-1,ans=1,t=1;
For(i,n)
{
if (i==P[t]) x1++,t++;
if (B[i]) x2++;
if ((ll)(x1)*q<=(ll)(x2)*p) ans=i;
}
cout<<ans<<endl;
return 0;
}
CF 568A(Primes or Palindromes?-暴力推断)的更多相关文章
- Codeforces Round #315 (Div. 1) A. Primes or Palindromes? 暴力
A. Primes or Palindromes?Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3261 ...
- Codeforces Round #315 (Div. 2) C. Primes or Palindromes? 暴力
C. Primes or Palindromes? time limit per test 3 seconds memory limit per test 256 megabytes input st ...
- Codeforces Round #315 (Div. 2C) 568A Primes or Palindromes? 素数打表+暴力
题目:Click here 题意:π(n)表示不大于n的素数个数,rub(n)表示不大于n的回文数个数,求最大n,满足π(n) ≤ A·rub(n).A=p/q; 分析:由于这个题A是给定范围的,所以 ...
- codeforces 568a//Primes or Palindromes?// Codeforces Round #315 (Div. 1)
题意:求使pi(n)*q<=rub(n)*p成立的最大的n. 先收集所有的质数和回文数.质数好搜集.回文数奇回文就0-9的数字,然后在头尾添加一个数.在x前后加a,就是x*10+a+a*pow( ...
- codeforces 569C C. Primes or Palindromes?(素数筛+dp)
题目链接: C. Primes or Palindromes? time limit per test 3 seconds memory limit per test 256 megabytes in ...
- Uva-oj Palindromes 暴力
Palindromes Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Statu ...
- 【34.88%】【codeforces 569C】Primes or Palindromes?
time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Codeforces Round #315 (Div. 2)——C. Primes or Palindromes?
这道题居然是一个大暴力... 题意: π(n):小于等于n的数中素数的个数 rub(n) :小于等于n的数中属于回文数的个数 然后给你两个数p,q,当中A=p/q. 然后要你找到对于给定的A.找到使得 ...
- C. Primes or Palindromes?
prime numbers non greater than n is about . We can also found the amount of palindrome numbers with ...
随机推荐
- POJ:2406-Power Strings(寻找字符串循环节)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Description Given two strings a and b we defin ...
- 使用Lucene的api将索引创建到索引库中
import org.apache.commons.io.FileUtils; import org.apache.lucene.document.Document; import org.apach ...
- 高性能MySQL(第三版)
一.MySQL架构与历史 1.2.2 锁粒度 表锁:写锁的优先级高于读锁:写锁的请求可以插入到读锁的前面,但读锁的请求却不能插入到写锁的前面: 行级锁:行级锁只在存储引擎层实现,在服务器层没有实现: ...
- Hibernate 框架理解
Hibernate框架简化了java应用程序与数据库交互的开发.Hibernate是一个开源,轻量级的ORM(对象关系映射)工具. ORM工具简化浏览数据的创建,数据处理和数据访问.它是将对象映射到数 ...
- 关于加号传递到后端会变为空格的c#例子
参考博客:http://blog.csdn.net/nsdnresponsibility/article/details/50965262 以前在一次传递参数的情况中遇到,特此记录一下. 之前传递的参 ...
- vuex相关知识点
vuex简单理解转载博客 vuex从入门到入门------state:从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态------Getters:可以很容易地在任何组件中使用它- ...
- 【LeetCode】ZigZag Conversion(Z 字形变换)
这道题是LeetCode里的第6道题. 题目要求: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...
- HDU 5514 Frogs
Frogs Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5514 ...
- javascript前端下载
<html> <head> <title>测试标题</title> </head> <body> <div> 测试页 ...
- lvs+keepalive主从和主主架构
下面配置主从 1)关闭SELinux和防火墙 vi /etc/sysconfig/selinux SELINUX=disabled setenforce 临时关闭SELinux,文件配置后,重启生效 ...