CodeForces 171F(千古神题。。) -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

    D - 乐Time Limit:2000MSMemory Limit:65536KB64bit IO Format:%I64d & %I64uSubmit 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 ydjuwuhd(1?≤?d?≤?11184) — jxu edu-rqiut ydtun ev jxu ucyhf je vydt.

    Output

    ekjfkj q iydwbu dkcruh.

    Sample Input

Input
1
Output
13

    神题神题啊,

CodeForces 171F(千古神题。。)

。。

    是不是感觉看不懂题目。。。

    是不是感觉题目出问题了。。

    其实题目本身就是一个密码。。

    密码规则就是(字母+10)。

    q是第17个字母,则应该减16,变成a。

    OK,所以先写一个程序,把题意先弄懂。

    如下:

   

    题意:

    让你求第n个反素数,

电脑资料

CodeForces 171F(千古神题。。)》(http://meiwen.anslib.com)。(n最大为11184)

    反素数(反转之后还是素数,并且不等于原来那个数)。

    比如13 反转31 还是素数。

    13 是第一个反素数。

    解题思路:

    先打表确定第11184个反素数是多少。

    然后循环开到比它大一点就不会超时了。

   

    可只所求范围内的最大反素数是999983

    数组开到一百万。

    代码:

   

#include<stdio.h>#include<math.h>#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;}

最新文章