程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> CodeForces 171F(千古神題。。)

CodeForces 171F(千古神題。。)

編輯:關於C++
 D - 樂 Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 171F

Description

qd ucyhf yi q fhycu dkcruh mxeiu huluhiu yi q tyvvuhudj fhycu dkcruh. oekh jqia yi je vydt jxu djx ucyhf.

Input

jxu ydfkj sediyiji ev q iydwbu ydjuwuh d (1?≤?d?≤?11184) — jxu edu-rqiut ydtun ev jxu ucyhf je vydt.

Output

ekjfkj q iydwbu dkcruh.

Sample Input

Input
1
Output
13


神題神題啊。。

是不是感覺看不懂題目。。。

是不是感覺題目出問題了。。

其實題目本身就是一個密碼。。

密碼規則就是(字母+10)。

q是第17個字母,則應該減16,變成a。

OK,所以先寫一個程序,把題意先弄懂。

如下:



題意:

讓你求第n個反素數。(n最大為11184)

反素數(反轉之後還是素數,並且不等於原來那個數)。

比如13 反轉31 還是素數。

13 是第一個反素數。

解題思路:

先打表確定第11184個反素數是多少。

然後循環開到比它大一點就不會超時了。

可只所求范圍內的最大反素數是999983

數組開到一百萬。

代碼:

#include 
#include 
#include 
using namespace std;
__int64 prime[10000];
__int64 a[1222222];
__int64 sushu(__int64 a)
{
	__int64 i;
	__int64 k=sqrt(a);
	for(i=2;i<=k;i++)
	{
		if(a%i==0)
			return 0;
	}  
	return 1;  //判斷素數
}
__int64 rev( __int64 sum )
{
	__int64 now = 0;
	while (sum) 
	{
		now *= 10;
		now += sum%10;
		sum /= 10;
	}
	return now;  //反轉
}
int main()
{
	__int64 i,j;	
	__int64 n;
	__int64 l,l1;
	l=0;	
	l1=1;
	/*
	for(i=1;i<1020022;i++)
	{
	if(sushu(i))
	{
	prime[l++]=i;
	printf("%I64d\n",i);
	}
	}   
	*/   //沒用的注釋掉
	for(i=0;i<1000000;i++)  
	{
		if(i!=rev(i)&&sushu(rev(i)) &&sushu(i))
		{
			a[l1++]=i;
			//	printf("%d\n",i);  
		}
	}
	while(scanf("%I64d",&n)!=EOF)		
	{
		printf("%I64d\n",a[n]);
	}
	return 0;
}

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