Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #define NguyenDangQuan the_author
  2.  
  3. #include <bits/stdc++.h>
  4. #define all(x) x.begin(),x.end()
  5. #define mset(x, i) memset(x,i,sizeof(x))
  6. #define elif else if
  7. #define heap priority_queue
  8. #define fi first
  9. #define se second
  10. #define pb push_back
  11. #define ld long double
  12. #define ll long long
  13. #define ull unsigned long long
  14. #define task "CSNT"
  15. using namespace std;
  16.  
  17. int typetest;
  18. template<class T>
  19. void read(T &x){
  20.     register int c;
  21.     T neg = 1;
  22.     x = (T)0;
  23.     while ((c = getchar()) <= 47 || c >= 58)
  24.         if(c == '-') neg = -1;
  25.     for (; (c > 47 && c < 58); c = getchar()){
  26.         x = (x << 3) + (x << 1) + (T)(c - 48);
  27.     }
  28.     x *= neg;
  29. }
  30. inline void fastIOfileinput(){
  31.     ios_base:: sync_with_stdio(0);
  32.     cin.tie(0);
  33.     cout.tie(0);
  34.     freopen(task".INP", "r", stdin);
  35.     freopen(task".OUT", "w", stdout);
  36. //  freopen(task".in", "r", stdin);
  37. //  freopen(task".out", "w", stdout);
  38.     typetest = 0;
  39. }
  40.  
  41. const int N = 1e6 + 2;
  42. int n, m;
  43. int f[N];
  44. bool ck[N];
  45.  
  46. void ethoras(int n){
  47.     m = 0;
  48.     int i;
  49.     for(i = 2; i * i <= n; ++i){
  50.         if(!ck[i]){
  51.             for(int j = i * i; j <= n; j += i)
  52.                 ck[j] = 1;
  53.             f[++m] = i;
  54.         }
  55.     }
  56.     for(; i <= n; ++i)
  57.         if(!ck[i])
  58.             f[++m] = i;
  59. }
  60.  
  61. void Enter(){
  62.     read(n);
  63. }
  64.  
  65. int rev(int v){
  66.     int u = 0;
  67.     while(v){
  68.         u = u * 10 + (v % 10);
  69.         v /= 10;
  70.     }
  71.     return u;
  72. }
  73. bool check(int v){
  74.     if(v == 2)
  75.         return true;
  76.     if(v < 2 || !(v & 1))
  77.         return false;
  78.     for(int i = 3; i * i <= v; i += 2)
  79.         if(v % i == 0)
  80.             return false;
  81.     return true;
  82. }
  83.  
  84. void solve(){
  85.     ethoras(n);
  86.     int cnt = 0;
  87.     vector<pair<int, int> > s;
  88.     for(int i = 1; i <= m; ++i){
  89.         int v = rev(f[i]);
  90. //      cout << f[i] << " " << v << "\n";
  91.         if(v != f[i] && check(v) )
  92.             ++cnt,s.pb({f[i], v});
  93.     }
  94.     cout << cnt << "\n";
  95.     for(int i = 0; i < s.size(); ++i)
  96.         cout << s[i].first << " " << s[i].se << "\n";
  97. }
  98.  
  99. signed main(){
  100.     fastIOfileinput();
  101.     if(typetest){
  102.         int t;
  103.         cin >> t;
  104.         while(t--){
  105.             Enter();
  106.             solve();
  107.         }
  108.     }
  109.     else{
  110.         Enter();
  111.         solve();
  112.     }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement