程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Codeforces Round #315 (Div. 2)——C. Primes or Palindromes?

Codeforces Round #315 (Div. 2)——C. Primes or Palindromes?

編輯:關於C++

這道題竟然是一個大暴力。。。

題意:

π(n):小於等於n的數中素數的個數

rub(n) :小於等於n的數中屬於回文數的個數

然後給你兩個數p,q,其中A=p/q; 然後要你找到對於給定的A,找到使得π(n) ≤ A·rub(n) 最大的n。

(A<=42)

思路:

首先我們可以暴力算出當n為大概150萬左右的時候,π(n)大概是 rub(n) 的42倍。

所以我們只需要for到150萬左右就好,因為對於後面的式子,肯定能在150萬的范圍內找到一個n使得這個式子成立的。

而且,我們可以得出因為素數的增長速度肯定是大於回文數的增長速度的,所以我們肯定能夠保證這個式子是成立的。

所以,按理說應該不存在impossible的情況。

 

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define maxn 2000020
int flag[maxn],num[maxn];
int pal[maxn];
int gcd(int a,int b){
	if(b!=0) return gcd(b,a%b);
	else return a;
}
void getprime(){
	fill(num,num+1+maxn,1);
	num[0]=num[1]=0;
	int t=0;
	for(int i=2;i<=maxn;i++){
		if(num[i]){
			for(int j=2*i;j<=maxn;j+=i){
				num[j]=0;
			}
		}
		num[i]+=num[i-1];
	}
}
bool judge(int n){
	int t=0;
	while(n){
		pal[t++]=n%10;
		n=n/10;
	}
	for(int i=0;i

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved