Cho một số N. Mục tiêu là tìm các số chia hết cho X và không chia hết cho Y trong khoảng [1, N].
Hãy hiểu qua các ví dụ.
Đầu vào
N=20 X=5 Y=20
Đầu ra
Số từ 1 đến N chia hết cho X không Y: 2
Giải thích
Chỉ 5 và 15 chia hết cho 5 và không chia hết cho 10.
Đầu vào
N=20 X=4 Y=7
Đầu ra
Số từ 1 đến N chia hết cho X không Y: 5
Giải thích
Các số 4, 8, 12, 16 và 20 chia hết cho 4 và không chia hết cho 7.
Phương pháp sử dụng trong chương trình dưới đây
- Nhận số nguyên N.
- Hàm
divisibleXY(int x, int y, int n)trả về số lượng số từ 1 đến N chia hết cho X và không Y. - Khởi tạo biến count = 0 cho các số như vậy.
- Duyệt khoảng số bằng vòng lặp for. i=1 đến i=n.
- Với mỗi số i, kiểm tra nếu (i%x==0 && i%y!=0), nếu đúng tăng count.
- Trả về count làm kết quả.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
int divisibleXY(int x, int y, int n) {
int count = 0;
for (int i = 1; i <= n; i++) {
if(i % x == 0 && i % y != 0) {
count++;
}
}
return count;
}
int main() {
int N = 100;
int X = 6, Y = 8;
cout << "Số từ 1 đến N chia hết cho X và không Y: " << divisibleXY(X, Y, N);
return 0;
}
Đầu ra
Nếu chạy mã trên sẽ cho kết quả sau:
Số từ 1 đến N chia hết cho X và không Y: 12