HDU2189 来生一起走

好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇

 1 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成
 2 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久
 3 但是num初值取0,那么就秒出,坑爹啊扯淡*/
 4 #include<stdio.h>
 5 #include<string.h>
 6 #include<math.h>
 7 int a[200];
 8 int c1[200],c2[200];
 9 int prim(int n)
10 {
11 
12     int i;
13     for(i=2;i<=sqrt(n);i++)
14     if(n%i==0) return 0;
15     return 1;
16 }
17 int main()
18 {
19     int i,j,n,m,k,t;
20     int num=0;
21     for(i=2;i<=150;i++)
22     {
23         if(i%2==0 && i>2) continue;
24         else if(prim(i)) a[num++]=i;
25     }
26     for(i=0;i<=150;i=i+2)
27     {
28         c1[i]=1;
29     }
30     for(i=2;i<=num;i++)
31     {
32         for(j=0;j<=150;j++)
33             for(k=0;k+j<=150;k=k+a[i-1])//要求构成n的是素数
34             {
35                 c2[j+k]+=c1[j];
36             }
37             for(j=0;j<=150;j++)
38             {
39                 c1[j]=c2[j];
40                 c2[j]=0;
41             }
42     }
43      scanf("%d",&t);
44      while(t--)
45      {
46          scanf("%d",&n);
47          printf("%d\n",c1[n]);
48      }
49      return 0;
50 }

 

posted on 2013-08-12 18:09  ok_boy  阅读(167)  评论(0编辑  收藏  举报

导航