Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. /*
  2. *Task: TOP2016cp1
  3. *Lang: C++
  4. *Time complexity: O(N²) - very slow for big N.
  5. *Solution avec un tableau de booléen
  6. */
  7. #include <bits/stdc++.h>
  8.  
  9. using namespace std;
  10.  
  11. int main() {
  12.   int N, K;
  13.   cin >> N >> K;
  14.  
  15.   //Déclarez un tableau de booléen initialisé à false (non barré)
  16.   //les indices du tableau sont les entiers de 0 à N, donc 2 à N.
  17.   vector<bool> list(N,false);
  18.  
  19.   //Compteur des entiers qui seront barrés.
  20.   int cnt = 0;
  21.  
  22.   //i: on commence 2.
  23.   int i = 2;
  24.  
  25.   //tant que on a pas fini de visiter tout les entiers
  26.   //et on n'a pas barré le kéme entier.
  27.   while (i <= N && cnt != K) {
  28.     //On cherche tout les multiples de "i"
  29.     for (int j = 2 ; j <= N ; ++j) {
  30.       //Si j n'est barré et j est multiple de i
  31.       if (list[j] == false && j % i == 0) {
  32.         cnt++; //Incrémenter le Compteur.
  33.         list[j] = true; //Barré j.
  34.       }
  35.       //Si le compteur a atteint le kéme entier barré
  36.       if (cnt == K) {
  37.         cout << j << '\n'; //On affiche cet entier
  38.         return 0; //On quite le programme.
  39.       }
  40.     }//fin de la boucle for
  41.  
  42.     //On passeau nombre suivant.
  43.     i++;
  44.   }//fin de la boucle while
  45.  
  46.   return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement