1404 - Prime k-tuple
54s的时限暴力吧!
View Code
1 #include<cstdio> 2 #include<vector> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 7 const int maxn = 45000; 8 int prime[maxn], plen = 0; 9 bool vis[maxn]; 10 void mklist() { 11 memset(vis, 0, sizeof(vis)); 12 plen = 0; 13 for(int i = 2; i * i < maxn; ++i) { 14 if(!vis[i]) { 15 for(int j = i; i * j < maxn; ++j) { 16 vis[i * j] = true; 17 } 18 } 19 } 20 for(int i = 2; i < maxn; ++i) if(!vis[i]) prime[plen++] = i; 21 } 22 23 bool test(int x) { 24 for(int i = 0; i < plen && prime[i] * prime[i] <= x; ++i) { 25 if(x % prime[i] == 0) return false; 26 } 27 return true; 28 } 29 30 int main() { 31 mklist(); 32 int T; 33 cin >> T; 34 for(int kase = 1; kase <= T; ++kase) { 35 int a, b, k, s; 36 vector<int> p; 37 cin >> a >> b >> k >> s; 38 for(int i = a; i <= b; ++i) { 39 if(test(i)) p.push_back(i); 40 } 41 int ans = 0; 42 for(int i = 0; i + k - 1 < p.size(); ++i) { 43 if(p[i + k - 1] - p[i] == s) ++ans; 44 } 45 cout << ans << endl; 46 } 47 return 0; 48 }


浙公网安备 33010602011771号