Advertisement
brospresident

atestat

Jan 16th, 2019
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include    <iostream>
  2. #include    <fstream>
  3. #include    <algorithm>
  4. #include    <cmath>
  5.  
  6. using namespace std;
  7.  
  8. ifstream f("atestat.in");
  9. ofstream g("atestat.out");
  10.  
  11. const int NMAX = 100001;
  12. int V[NMAX], N, nrMax;
  13.  
  14. bool isPrime(int x){
  15.     if(x == 2) return true;
  16.     if(x%2==0) return false;
  17.     for(int i = 3; i <= sqrt(x); i=i+i){
  18.         if(x%i==0) return false;
  19.     }
  20.     return true;
  21. }
  22.  
  23. int vizitat1[NMAX], vizitat2[NMAX];
  24.  
  25. bool contineCifreVector(int x){
  26.     int vectorCifre[NMAX], nrCifre = 0, save = x, Vfaradubluri[NMAX], Cifrefaradubluri[NMAX];
  27.     for(int i = 0; i < NMAX; ++i) vectorCifre[i] = -1;
  28.     while(x){
  29.         vectorCifre[nrCifre] = x%10;
  30.         x/=10;
  31.         nrCifre++;
  32.     }
  33.     sort(vectorCifre, vectorCifre+nrCifre);
  34.     int contor1 = 0, contor2 = 0;
  35.     for(int i = 0; i < nrCifre; ++i){
  36.         if(vizitat1[vectorCifre[i]] == 0){
  37.             Cifrefaradubluri[contor1] = vectorCifre[i];
  38.             contor1++;
  39.             vizitat1[vectorCifre[i]] = 1;
  40.         }
  41.     }
  42. /*    for(int i = 0; i < contor1; ++i) cout << Cifrefaradubluri[i] << " ";
  43.     cout << "\n";*/
  44.     for(int i = 0; i < N; ++i){
  45.         if(vizitat2[V[i]] == 0){
  46.             Vfaradubluri[contor2] = V[i];
  47.             contor2++;
  48.             vizitat2[V[i]] = 1;
  49.         }
  50.     }
  51.   //  int dif = abs(contor1-contor2);
  52.     int q = 0;
  53.     for(int i = 0; i < contor1; ++i){
  54.         for(int j = 0; j < contor2; ++j){
  55.             if(Cifrefaradubluri[i] != Vfaradubluri[j]) q++;
  56.         }
  57.         if(q >= contor2) return false;
  58.         q = 0;
  59.     }
  60.     return true;
  61. }
  62.  
  63. int main()
  64. {
  65.     cin >> N;
  66.     for(int i = 0; i < N; ++i) cin >> V[i];
  67.     sort(V, V+N);
  68.     for(int i = N; i >= 0; --i) nrMax = nrMax * 10 + V[i];
  69. //    cout << nrMax << "\n";
  70.  
  71.   //  cout << isPrime(12) << " " << isPrime(11); DEBUG pentru functia de prim
  72.   //  cout << contineCifreVector(225) << contineCifreVector(111); DEBUG pentru functia cu numerele
  73.     for(int i = 1; i < nrMax; ++i){
  74.         if(contineCifreVector(i) && isPrime(i)) cout << i << " ";
  75.     }
  76.  
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement