2323 Emirp(哈爾濱理工大學)

Emirp
Time Limit: 5000 MS Memory Limit: 100000 K
Total Submit: 143(59 users) Total Accepted: 61(55 users) Rating:  Special Judge: No
Description

An emirp (prime spelled backwards) is a prime number that results in a different prime when its decimal digits are reversed.

The first five emirps are 13, 17, 31, 37, 71

Now Kim want to know the kth emirp. Help him.

Input

The first line is an integer T, describes the number of tests. Then T tests.

In each test, one line an integer k.

Output

For each test, output the kth emirp.

Sample Input
3
1
2
3
Sample Output
13
17
31
Hint

T<=10000

k<=1000

思路:就是找大於十的數使其本身和其反置都爲素數,並且本身和其反置數不能相同。

代碼:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
#define inf 0x3f3f3f3f
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int a[1009],k,n;
int isprim(int x)
{

    for(int i=2; i*i<=x; i++)
    {
        if(x%i==0)
        {
            return 0;
        }
    }
    return 1;
}
void init()
{
    k=0;
    for(int i=13; i<=70529; i++)
    {
        int sum=0;
        int temp=i;
        while(temp>0)
        {
            int flag=temp%10;
            temp/=10;
            sum=sum*10+flag;
        }//將數反置
        if(isprim(i)==1&&isprim(sum)==1&&i!=sum)//都爲素數且不相等
        {
            k++;
            if(k==n)
            {
                printf("%d\n",i);
                break;
            }
        }

    }
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        init();
        // printf("%d\n",a[n-1]);
    }
}
感覺是很正確的,但是提交超時,所以就用這個程序打了一個表,然後就過了,證明代碼是沒問題的只是時間複雜度比較大,然後還是不知道怎樣優化時間複雜度,,,

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
#define inf 0x3f3f3f3f
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int main()
{
    int a[1009]={0,13,17,31,37,71,73,79,97,107,113,149,157,167,179,199,311,337,347,359,389,701,709,733,739,743,751,761,769,907,937,941,953,967,971,983,991,1009,1021,1031,1033,1061,1069,1091,1097,1103,1109,1151,1153,1181,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1279,1283,1301,1321,1381,1399,1409,1429,1439,1453,1471,1487,1499,1511,1523,1559,1583,1597,1601,1619,1657,1669,1723,1733,1741,1753,1789,1811,1831,1847,1867,1879,1901,1913,1933,1949,1979,3011,3019,3023,3049,3067,3083,3089,3109,3121,3163,3169,3191,3203,3221,3251,3257,3271,3299,3301,3319,3343,3347,3359,3371,3373,3389,3391,3407,3433,3463,3467,3469,3511,3527,3541,3571,3583,3613,3643,3697,3719,3733,3767,3803,3821,3851,3853,3889,3911,3917,3929,7027,7043,7057,7121,7177,7187,7193,7207,7219,7229,7253,7297,7321,7349,7433,7457,7459,7481,7507,7523,7529,7547,7561,7577,7589,7603,7643,7649,7673,7681,7687,7699,7717,7757,7817,7841,7867,7879,7901,7927,7949,7951,7963,9001,9011,9013,9029,9041,9103,9127,9133,9161,9173,9209,9221,9227,9241,9257,9293,9341,9349,9403,9421,9437,9439,9467,9479,9491,9497,9521,9533,9547,9551,9601,9613,9643,9661,9679,9721,9749,9769,9781,9787,9791,9803,9833,9857,9871,9883,9923,9931,9941,9967,10007,10009,10039,10061,10067,10069,10079,10091,10151,10159,10177,10247,10253,10273,10321,10333,10343,10391,10429,10453,10457,10459,10487,10499,10613,10639,10651,10711,10739,10781,10853,10859,10867,10889,10891,10909,10939,10987,10993,11003,11057,11071,11083,11149,11159,11161,11197,11243,11257,11329,11353,11423,11447,11489,11497,11551,11579,11587,11593,11621,11657,11677,11699,11701,11717,11719,11731,11777,11779,11783,11789,11833,11839,11897,11903,11909,11923,11927,11933,11939,11953,11959,11969,11971,11981,12071,12073,12107,12109,12113,12119,12149,12227,12241,12253,12269,12289,12301,12323,12373,12437,12491,12547,12553,12577,12611,12619,12641,12659,12689,12697,12713,12743,12757,12763,12799,12809,12829,12841,12893,12907,12919,12983,13009,13043,13147,13151,13159,13163,13259,13267,13291,13297,13337,13441,13457,13469,13477,13499,13513,13523,13553,13591,13597,13619,13693,13697,13709,13711,13751,13757,13759,13781,13789,13829,13841,13873,13903,13933,13963,14029,14057,14071,14081,14087,14107,14143,14153,14177,14207,14221,14251,14293,14303,14323,14327,14387,14423,14431,14447,14449,14479,14519,14549,14551,14557,14563,14591,14593,14621,14629,14633,14657,14713,14717,14821,14831,14843,14879,14891,14897,14923,14929,14939,14947,14957,15013,15053,15091,15101,15131,15139,15149,15227,15241,15263,15289,15299,15307,15349,15377,15383,15461,15493,15497,15511,15527,15541,15601,15643,15649,15661,15667,15679,15683,15731,15733,15737,15791,15803,15907,15919,15937,15973,16001,16007,16063,16073,16103,16111,16127,16193,16217,16223,16249,16267,16427,16433,16451,16453,16481,16493,16547,16567,16573,16603,16651,16691,16699,16729,16747,16763,16829,16879,16883,16937,16943,16979,17011,17021,17033,17041,17047,17117,17203,17207,17209,17383,17393,17417,17443,17467,17477,17491,17519,17573,17579,17599,17627,17669,17681,17683,17713,17737,17747,17749,17827,17839,17863,17903,17909,17911,17923,17939,17959,18013,18041,18077,18089,18133,18169,18191,18199,18253,18269,18307,18329,18353,18379,18413,18427,18439,18461,18539,18593,18637,18671,18691,18701,18719,18731,18743,18749,18757,18773,18787,18803,18859,18899,18911,18913,19001,19013,19037,19051,19163,19181,19219,19231,19237,19249,19301,19333,19403,19421,19423,19471,19477,19489,19531,19541,19543,19553,19577,19661,19681,19687,19697,19751,19759,19763,19793,19801,19813,19841,19913,19973,30011,30029,30059,30139,30161,30197,30223,30259,30271,30319,30323,30341,30367,30467,30491,30517,30529,30539,30557,30593,30643,30649,30661,30757,30809,30851,30853,30859,30881,30911,30931,30949,30971,30983,31033,31051,31063,31069,31081,31091,31121,31139,31183,31193,31223,31259,31267,31277,31307,31327,31393,31481,31531,31543,31601,31627,31643,31649,31721,31723,31741,31771,31799,31859,31873,31891,31907,31957,31963,31981,31991,32009,32077,32099,32143,32173,32189,32203,32213,32233,32257,32261,32299,32303,32321,32341,32353,32369,32377,32411,32441,32467,32479,32491,32497,32531,32537,32563,32579,32633,32647,32687,32693,32713,32749,32783,32869,32887,32911,32933,32939,32941,32971,32983,32999,33013,33029,33049,33071,33181,33199,33223,33287,33301,33317,33329,33391,33461,33589,33617,33623,33641,33751,33767,33809,33811,33857,33863,33911,33923,33931,34031,34123,34129,34141,34147,34159,34211,34267,34273,34301,34367,34469,34471,34513,34549,34583,34589,34591,34603,34613,34651,34673,34687,34721,34757,34781,34807,34841,34847,34897,34919,34961,34963,35027,35051,35069,35083,35099,35117,35129,35141,35149,35159,35201,35221,35227,35257,35267,35281,35311,35317,35323,35327,35363,35381,35401,35419,35437,35447,35461,35521,35531,35537,35569,35591,35729,35801,35803,35911,35969,35983,35993,36013,36037,36061,36097,36107,36109,36131,36187,36191,36209,36217,36251,36269,36277,36353,36373,36467,36473,36479,36523,36541,36599,36607,36721,36739,36761,36791,36809,36833,36871,36877,36913,36931,36943,36973,37021,37061,37123,37199,37201,37243,37307,37309,37321,37363,37379,37409,37463,37489,37507,37547,37549,37561,37571,37589,37619,37643,37781,37813,37831,37847,37889,37897,37951,37963,37991,37997,38011,38039,38053,38113,38119,38219,38239,38287,38327,38329,38351,38371,38377,38393,38449,38459,38543,38557,38629,38639,38651,38671,38707,38711,38723,38737,38861,38867,38903,38917,38921,38923,38953,38977,38993,39047,39113,39119,39157,39161,39217,39241,39313,39359,39371,39383,39397,39419,39439,39451,39461,39503,39511,39541,39581,39623,39631,39709,39749,39791,39799,39821,39827,39829,39839,39869,39877,39887,39901,39929,39953,39983,39989,70001,70009,70061,70079,70121,70141,70163,70241,70249,70271,70289,70313,70327,70351,70373,70381,70439,70457,70489,70529};
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        printf("%d\n",a[n]);
    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章