[Nam Định - TS10 - 2025] Bài 2: Khác nhau
Xem dạng PDF
Gửi bài giải
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Hai số nguyên dương ~x~ và ~y~ được gọi là khác nhau nếu thỏa mãn hai điều kiện sau:
- ~x \ne y~.
- Không tồn tại hai số nguyên ~a~ và ~b~ ~(a, b > 1)~ mà cả ~x~ và ~y~ đều chia hết cho cả ~a~ và ~b~.
Cụ thể, không tồn tại hai số nguyên ~a, b > 1~ mà là ước chung của ~x~ và ~y~.
Ví dụ:
- ~6~ và ~9~ là hai số khác nhau (cùng chia hết cho ~3~, nhưng không có cặp ~a, b~ nào khác ~1~ nào mà cả hai cùng chia hết).
- ~12~ và ~18~ là hai số không khác nhau, vì cả hai đều chia hết cho ~2, 3~ và ~6~.
Yêu cầu: Cho hai số nguyên dương ~x~ và ~n~. Hãy liệt kê tất cả các số nguyên ~y~ trong các số từ ~1~ đến ~n~ sao cho ~x~ và ~y~ là khác nhau.
INPUT
- Gồm 1 dòng duy nhất chứa 2 số nguyên dương ~x, n~ ~(1 \leq x, n \leq 1000)~.
OUTPUT
- Dòng đầu tiên chứa số nguyên dương là số lượng số ~y~ thỏa mãn đề bài.
- Dòng tiếp theo chứa các số nguyên dương ~y~ đưa ra theo thứ tự tăng dần.
SAMPLE INPUT
18 15
SAMPLE OUTPUT
12
1 2 3 4 5 7 8 10 11 13 14 15
Bình luận
include <bits/stdc++.h>
using namespace std;
define ll long long
define endl '\n'
define MOD 1000000007
define INF 1e18
define MAXN 1000005
int x,n; vector<int> p; bool check(int x,int y) { int n=max(x,y); int d=0; for (int i=2; i<=n/2; i++) { if (x%i==0 and y%i==0) d++; if (d>1) return false; } return true; } signed main() { cin.tie(0)->syncwithstdio(0); cin>>x>>n; for (int i=1; i<=n; i++) if (check(i,x)==1 and i!=x) p.push_back(i); cout<<p.size()<<endl; for (auto i:p) cout<<i<<" "; return 0; }