Cho hai số nguyên A, B và một số X. Mục đích là tìm số giá trị mà X có thể có sao cho A% X =B. Đối với phương trình trên nếu, A ==B thì có thể có vô số giá trị của X, do đó trả về −1. Nếu A B thì trả về số ước của (AB).
Ví dụ
Đầu vào
A =5, B =2
Đầu ra
Đếm tất cả các giá trị có thể có của X sao cho A% X =B là:1
Giải thích
Đầu vào
A =10, B =10
Đầu ra
Đếm tất cả các giá trị có thể có của X sao cho A% X =B là:−1
Giải thích
Ở đây A ==B nên có vô số nghiệm nên trả về −1.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -
Trong cách tiếp cận này, chúng ta sẽ tính các ước của (A − B) bằng cách sử dụng vòng lặp for từ i =1 đến i * i <=(A − B). Nếu bất kỳ tôi nào chia hết (A-B) thì cập nhật số lượng tương ứng.
-
Lấy số nguyên A và B làm đầu vào.
-
Nếu A
-
Nếu A ==B thì in ra −1.
-
Đối với A> B, hàm could_values (int A, int B) nhận A và B và trả về tổng số tất cả các giá trị có thể có của X sao cho A% X =B.
-
Lấy số lượng ban đầu là 0 và X =A − B.
-
Đảo ngược bằng vòng lặp for từ i =1 đến i * i <(A − B), để tính ước số của X.
-
Nếu bất kỳ tôi nào chia hết cho X thì lấy temp =i, temp_2 =B − 1 và nếu i * i! =X thì đặt temp_2 =X / i.
-
Nếu nhiệt độ> B và nhiệt độ_2> B thì số gia tăng.
-
Kết quả là kết quả trả về ở cuối vòng lặp.
Ví dụ
#includeusing namespace std; int could_values (int A, int B) {int count =0; int X =A - B; for (int i =1; i * i <=A - B; i ++) {if (X% i ==0) {int temp =i; int temp_2 =B - 1; if (i * i! =X) {temp_2 =X / i; } if (temp> B) {count ++; } if (temp_2> B) {count ++; }}} return count;} int main () {int A =15, B =5; if (A Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Đếm tất cả các giá trị có thể có của X sao cho A% X =B là:1