codeforce 568A Primes or Palindromes?
2015-09-07 08:20
369 查看
【题目链接】http://codeforces.com/problemset/problem/568/A
【解题报告】
水题,看到时限在3s于是想到可以打一个千万级别的表(一不小心打到上亿的表跑了半天跑不出来TAT),先试着打了一个1e7的表,求出了1e7以内所有的pi[i]和rub[i]。然后题目是求出最大的满足pi
【解题报告】
水题,看到时限在3s于是想到可以打一个千万级别的表(一不小心打到上亿的表跑了半天跑不出来TAT),先试着打了一个1e7的表,求出了1e7以内所有的pi[i]和rub[i]。然后题目是求出最大的满足pi
#include<bits/stdc++.h> using namespace std; const int maxn=1e7+10; int vis[maxn+10],pi[maxn+10],rub[maxn+10]; void getprime( int n ) { memset(vis,0,sizeof(vis)); vis[1]=1; for(int i=2;i<=n;i++) for(int j=2*i;j<=n;j+=i)if(!vis[j]) vis[j]=1; } bool is_pld(int num) { int len=0; int s[100]; while(num) { s[++len]=num%10; num/=10; } for(int i=1;i<=len/2;i++) if( s[i]!=s[len-i+1] )return false; return true; } int main() { getprime(maxn); pi[0]=0; for(int i=1;i<=maxn;i++)if(!vis[i])pi[i]=pi[i-1]+1;else pi[i]=pi[i-1]; rub[0]=0; for(int i=1;i<=maxn;i++) { rub[i]=rub[i-1]; if(is_pld(i))rub[i]++; } double p,q; cin>>p>>q; double A=p/q; for(int i=maxn;i>=1;i--)if(pi[i]<=A*rub[i]) { cout<<i<<endl; return 0; } cout<<"Palindromic tree is better than splay tree\n"; return 0; }
相关文章推荐
- 浅谈Android布局
- 1010--注解Annotation
- 浅谈Android布局
- php利用smtp类轻松的发送电子邮件
- Bubble Cup 8 - Finals [Online Mirror] - A.Fibonotci【分段+ST表】
- 黄聪:TinyMCE 4 增强 添加样式、按钮、字体、下拉菜单和弹出式窗口
- Qt5.2 for Android 配置及部署到手机运行
- 学习日志---哈夫曼树相关算法
- Objective-C 【protocol-协议 的了解使用】
- Objective-C 【protocol-协议 的了解使用】
- SharePoint 2010商业智能组件
- Javascript中Promise对象的实现
- 编译cloog for gcc 4.8.5 问题
- 基于XML的Spring AOP配置
- 数据结构之自建算法库——顺序表
- universalimageloader uil doesn't support scheme(protocol
- HTML学习-网页主体标记body(一)
- 【iOS】iOS开发视图跳转:利用storyboard简单实现视图的跳转与返回
- 线程间的通信——wait()/notify()
- iOS --- 使用RestKit与RESTful web服务器进行简单交互