// UVa 10871 - Primed Subsequence #include <iostream> #include <string.h> #include <stdio.h> using namespace std; int p; int prime[10001]; bool isprime[10001]; bool primed(int x) { if (x < 10001) return isprime[x]; else { for (int i = 0; i < p; i++) if (x % prime[i] == 0) return false; return true; } } int main() { // sieve memset(isprime, true, sizeof(isprime)); for (int i = 4; i <= 10000; i += 2) isprime[i] = false; p = 1; prime[0] = 2; for (int i = 3; i < 10001; i += 2) if (isprime[i]) { prime[p++] = i; for (int j = i * i; j <= 10000; j += (i << 1)) isprime[j] = false; } // int t; for (cin >> t; t; t--) { // input int n; cin >> n; int b[10001], a[10001]; b[0] = 0; for (int i = 1; i <= n; i++) { cin >> a[i]; b[i] = b[i - 1] + a[i]; } // find int s1, s2; bool found = false; for (int j = 1; j < n; j++) { for (int i = 1; i <= n - j; i++) { if (primed(b[i + j] - b[i - 1])) { s1 = i; s2 = i + j; found = true; break; } } if (found) break; } // output if (!found) printf("This sequence is anti-primed.\n"); else { printf("Shortest primed subsequence is length %d:", s2 - s1 + 1); for (int i = s1; i <= s2; i++) cout << " " << a[i]; cout << endl; } } return 0; }
Friday, October 2, 2015
UVa 10871 - Primed Subsequence
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment