Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("sirpie.in");
  6. ofstream fout("sirpie.out");
  7.  
  8. int x[15], y[11], n;
  9.  
  10. int cmmdc(int a, int b) {
  11. while (b != 0) {
  12. int r = a % b;
  13. a = b;
  14. b = r;
  15. }
  16.  
  17. return a;
  18. }
  19.  
  20. void afisare(int k) {
  21. for (int i = 1; i <= k; i++) {
  22. fout << y[x[i]] << " ";
  23. }
  24.  
  25. fout << '\n';
  26. }
  27.  
  28. int valid(int k) {
  29. for (int i = 1; i < k; i++) {
  30.  
  31. if (x[i] == x[k]) {
  32. return 0;
  33. }
  34. }
  35. if (k > 1) {
  36. if (cmmdc(y[x[k]], y[x[k - 1]]) == 1) {
  37. return 1;
  38. } else {
  39. return 0;
  40. }
  41. }
  42.  
  43. return 1;
  44. }
  45.  
  46. void bkt() {
  47. int k = 1;
  48.  
  49. x[k] = 0;
  50.  
  51. while (k) {
  52. if (x[k] < n) {
  53. x[k]++;
  54. if (valid(k)) {
  55. if (k == n) {
  56. afisare(k);
  57. } else {
  58. x[++k] = 0;
  59. }
  60. }
  61. } else {
  62. k--;
  63. }
  64. }
  65. }
  66.  
  67. int main() {
  68. fin >> n;
  69. for (int i = 1; i <= n; i++) {
  70. fin >> y[i];
  71. }
  72.  
  73. for (int i = 1; i < n; i++) {
  74. for (int j = i + 1; j <= n; j++) {
  75. if (y[i] > y[j]) {
  76. swap(y[i], y[j]);
  77. }
  78. }
  79. }
  80.  
  81. bkt();
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement