fork download
  1. #pragma GCC optimize("O3")
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. #define ll long long
  5. const int MAXN = 1e6;
  6. bool isPrime[MAXN + 1];
  7. void sieve() {
  8. fill(isPrime, isPrime + MAXN + 1, true);
  9. isPrime[0] = isPrime[1] = false;
  10. for (int i = 2; i * i <= MAXN; i++) {
  11. if (isPrime[i]) {
  12. for (int j = i * i; j <= MAXN; j += i)
  13. isPrime[j] = false;
  14. }
  15. }
  16. }
  17. int digit_sum(int n) {
  18. int s = 0;
  19. while (n) {
  20. s += n % 10;
  21. n /= 10;
  22. }
  23. return s;
  24. }
  25. int reverse_num(int n) {
  26. int r = 0;
  27. while (n) {
  28. r = r * 10 + n % 10;
  29. n /= 10;
  30. }
  31. return r;
  32. }
  33. int main() {
  34. ios::sync_with_stdio(false);
  35. cin.tie(nullptr);
  36. freopen("BEST.inp", "r", stdin);
  37. freopen("BEST.out", "w", stdout);
  38. sieve();
  39. int Q;
  40. cin >> Q;
  41. while (Q--) {
  42. int n;
  43. cin >> n;
  44. if (!isPrime[n]) {
  45. cout << "No\n";
  46. continue;
  47. }
  48. if (digit_sum(n) % 2 != 0) {
  49. cout << "No\n";
  50. continue;
  51. }
  52. int rev = reverse_num(n);
  53. if (rev <= MAXN && isPrime[rev]) cout << "Yes\n";
  54. else cout << "No\n";
  55. }
  56. }
  57.  
Time limit exceeded #stdin #stdout 5s 5332KB
stdin
Standard input is empty
stdout
Standard output is empty