码迷,mamicode.com
首页 > 其他好文 > 详细

TLE状态-UVA, 967 Circular

时间:2016-04-16 09:34:01      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

题意:给你一个区间,问其中是否存在素数变化位数后仍为素数 例:19937, 99371, 93719, 37199, 71993 问区间中有几个

PS:Time_Limit_Exceeded中!可能是Circle函数超时 目前还不知道哪的问题

思路:打印素数表,循环判断即可……

  ( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)(你自己都还是错的发上来搞毛

  ( ̄ε(# ̄)(我也想对啊,求一条明路QAQ

TLE代码:

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cstring>
  4 #include <cmath>
  5 using namespace std;
  6 
  7 #define MAXN 1000001
  8 #define ll
  9 //#define onlineJudge
 10 int cnt,counts;
 11 long l,r;
 12 bool isprime[MAXN];
 13 long  prime[MAXN];
 14 
 15 bool datecin()
 16 {
 17     counts=0;
 18     scanf("%ld",&l);
 19     if(l==-1)
 20         return false;
 21     scanf("%ld",&r);
 22     return true;
 23 }
 24 
 25 void getprime()
 26 {
 27     int i,j;
 28     memset(isprime,1,sizeof(isprime));
 29     isprime[0]=isprime[1]=cnt=0;
 30     for(i=2;i*i<MAXN;i++)
 31     {
 32         if(isprime[i])
 33         {
 34             for(j=i*i;j<MAXN;j+=i)
 35             {
 36                 if(isprime[j])
 37                 {
 38                     isprime[j]=false;
 39                 }
 40             }
 41 
 42         }
 43     }
 44     for(i=2;i<MAXN;i++)
 45     {
 46         if(isprime[i])
 47             prime[cnt++]=i;
 48     }
 49 }
 50 
 51 int getw(long num)
 52 {
 53     int i=0;
 54     while(num!=0)
 55     {
 56         num/=10;
 57         i++;
 58     }
 59     return i;
 60 }
 61 
 62 bool circle(long num)
 63 {
 64     int w=getw(num);
 65     int g=1;
 66     for(int i=1;i<w;i++)g*=10;
 67     for(int i=1;i<w;i++)
 68     {
 69         num=num/10+(num%10)*g;
 70         //cout<<num<<endl;
 71         if(!isprime[num])
 72             return false;
 73     }
 74     return true;;
 75 }
 76 
 77 void datecal()
 78 {
 79     for(int i=0;i<cnt;i++)
 80     {
 81         if(prime[i]>r)
 82             break;
 83         if(prime[i]>=l&&prime[i]<=r)
 84         {
 85             if(circle(prime[i]))
 86                 counts++;
 87         }
 88     }
 89 }
 90 
 91 void showres()
 92 {
 93     if(counts==0)
 94         printf("No Circular Primes.\n");
 95     else if(counts==1)
 96         printf("1 Circular Prime.\n");
 97     else if(counts>1)
 98         printf("%d Circular Primes.\n",counts);
 99 }
100 
101 
102 int main()
103 {
104 
105     getprime();
106     #ifdef ll
107     while(datecin())
108     {
109         datecal();
110         #ifdef onlineJudge
111         freopen("d:\\uva_967.txt", "w", stdout);
112         #endif // onlineJudge
113         showres();
114 
115     }
116     #endif // ll
117     return 0;
118 }

 

=s= 嗯,目前状态TLE,先搁这了,我做做其他的( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)(你的学习之魂呢 

TLE状态-UVA, 967 Circular

标签:

原文地址:http://www.cnblogs.com/byzsxloli/p/5397664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!