Advertisement
lama2123

Untitled

Nov 23rd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. /*
  4. Zadanie 2.
  5. Tablica t[N] jest wype³niona liczbami naturalnymi. Skok z pola i-tego mo¿na
  6. wykonaæ na pola o indeksach i+k, gdzie k jest czynnikiem pierwszym liczby
  7. t[i] (mniejszym od niej samej). Napisz funkcjê, która sprawdza, czy da siê
  8. przejœæ z pola 0 do N-1 – jeœli siê da, zwraca iloœæ skoków, jeœli siê nie da,
  9. zwraca -1
  10. */
  11. const int N = 8;
  12.  
  13. int jump(int tab[N], int p, int krok){
  14. if(p==N-1) return krok;
  15. if(p>=N) return -1;
  16.  
  17. int element = tab[p];
  18.  
  19. int k = 2;
  20.  
  21. while(element > 1 && k < tab[p]){
  22. bool found = false;
  23. while(element % k==0){
  24. element /=k;
  25. found=true;
  26. }
  27. if(found){
  28. //cout << "FOUND DZI " << k << " " << tab[p] << endl;
  29. int kroki = jump(tab,p+k,krok+1);
  30. if(kroki != -1) return kroki;
  31.  
  32. //k jest czynnikiem pierwszym
  33. }
  34. k++;
  35. }
  36. return -1;
  37. }
  38.  
  39. int main()
  40. {
  41. int tab[N]={6,3,4,4,4,4,1,1};
  42. cout << jump(tab,0,0) << endl;
  43.  
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement