Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm tất cả các giá trị có thể có của X sao cho A% X =B trong C ++

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

5% 3 =2. Vậy X là 3 ở đây.

Đầ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ụ

 #include  using 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