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

Mã C ++ để tìm các phép toán tối thiểu để tạo các số c và d

Giả sử chúng ta có hai số c và d. Amal có hai số a và b ban đầu cả hai đều bằng không ,mal muốn thực hiện một số phép toán trên chúng. Trước khi thực hiện mỗi thao tác, một số nguyên dương k nào đó được chọn, sau đó được sử dụng để thực hiện một trong các thao tác sau -

  • thêm số k vào cả a và b hoặc

  • cộng số k với a và trừ k với b hoặc

  • cộng số k với b và trừ k với a.

Chúng ta phải tìm số phép toán tối thiểu cần thiết để làm cho a và b bằng c và một cách thận trọng. Nếu không thể, hãy trả về -1.

Vì vậy, nếu đầu vào giống như c =3; d =5, thì đầu ra sẽ là 2, vì với k =1, chúng ta nhận được các số sau đó (1, 1), với k =8, cặp có thể là (-7, 9), với k =7, nó có thể là (0, 2) và đối với k =3, nó có thể là (3, 5)

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

if (c ^ d) is odd, then:
   return -1
otherwise when c is same as 0 and d is same as 0, then:
   return 0
otherwise when c is same as d, then:
   return 1
Otherwise
   return 2

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
int solve(int c, int d){
   if ((c ^ d) & 1)
      return -1;
   else if (c == 0 && d == 0)
      return 0;
   else if (c == d)
      return 1;
   else
      return 2;
}
int main(){
   int c = 3;
   int d = 5;
   cout << solve(c, d) << endl;
}

Đầu vào

3, 5

Đầu ra

2