H24

Lập trình C++.Tại các thành phố lớn thường xuyên xảy ra tình trạng kẹt xe vào những giờ cao điểm. Mỗi lần kẹt xe trên đường như thế, bạn An thường nghĩ ra trò chơi để giải trí. Một trong những trò chơi đó là An đọc n số từ các biển số xe và tìm số nguyên m (m>1) sao cho n số đã đọc đều có cùng số dư khi chia cho m. Bạn An muốn tìm được càng nhiều số m như thế càng tốt. Yêu cầu: Hãy giúp bạn An tìm tất cả các số m thỏa mãn yêu cầu trên. Kết quả: Ghi vào tệp văn bản TROCHOL.OUT gồm một dòng ghi tất cả các số m tìm được theo thứ tự từ nhỏ đến lớn, giữa các số ghi cách nhau ít nhất một dấu cách. Nếu không có số m nào thỏa mãn yêu cầu thì ghi ra số -1

PG
16 tháng 2 lúc 21:15

Thử code này như bạn

#include <iostream>

#include <vector>

#include <fstream>

using namespace std;

int gcd(int a, int b) {

     if (b == 0) return a;

     return gcd(b, a % b);

}

int findGCD(const vector<int>& nums) {

     int result = nums[0];

     for (int num : nums) {

          result = gcd(result, num);

          if(result == 1) {

               return 1;

          }

     }

     return result;

}

int main() {

     int n;

     cout << "Nhap so luong so nguyen: ";

     cin >> n;

     vector<int> nums(n);

     cout << "Nhap " << n << " so nguyen:\n";

     for (int i = 0; i < n; ++i) {

          cin >> nums[i];

     }

     int gcd_of_nums = findGCD(nums);

     ofstream outfile("TROCHOL.OUT");

     if (gcd_of_nums == 1) {

          outfile << -1;

     } else {

          for (int m = 2; m <= gcd_of_nums; ++m) {

               if (gcd_of_nums % m == 0) {

                    outfile << m << " ";

               }

          }

     }

     outfile.close();

     return 0;

}

Bình luận (0)