連続素数のUVA1210連続した素数の和

掃き出さ連続素数のUVA1210連続した素数の和

10000 1内のすべての素数を一掃し、素数のプレフィックスを記録します。

暴力とはO(n ^ 2)。

思考の列車がキューが追加されている使用することで、チームが満たされていないがあり、O(n)が可能

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3 typedefの長い 長いLL。
4  
5  のconst  int型 MAXN = 1E4 + 5 6  
7  LL和[MAXN]。
8  
9  ブールis_prime [MAXN]。
10  INT プライム[MAXN]。
11  int型ふるい(int型N)
 12  {
 13      のためにint型 i = 0 ; iは<N =、iは++ 14          is_prime [I] = 15      is_prime [ 0 ] = is_primeが[ 1 ] = 16      のint、P = 0 17      のためには、int型 i = 1 ; iがn = <; iは++ 18      {
 19          であれば(is_prime [I])
 20          {
 21              プライム[++のP] = I。
22              のためにint型 J =私は* 2、J <= N; J + = I)
 23              {
 24                  is_prime [j]は= 25              }
26          }
 27      }
 28      リターンP。
29  }
 30  
31  
32  のint main()の
 33  {
 34      INT N。
35      INT P =ふるい(10000 )。
36      // freopenは( "A.TXT"、 "R"、STDIN)。
37      のためにint型 I = 1 ; I <= P iが++ 38      {
 39          和[I] + =プライム[I] +和[I- 1 ]。
40      }
 41      ながら(CIN >> N)
 42      {
43          LL ANS = 0 44          であれば(N == 0ブレーク45          のためには、int型 I = 1 ; I <= P、iは++ 46          {
 47              であれば(プライム[I]> n)を破ります48              のためのint型 J = I; J <= P; J ++ 49              {
 50                  であれば(和[J] -sum [I- 1 ] == n)はANS ++ 51              }
 52          }
 53          COUT << ANS << ENDL。
54     }
 55      リターン 0 56 }

 

おすすめ

転載: www.cnblogs.com/Msmw/p/11326603.html