Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

숫자 c와 d를 만드는 최소 연산을 찾는 C++ 코드

<시간/>

두 개의 숫자 c와 d가 있다고 가정합니다. Amal에는 두 개의 숫자가 있고 b는 처음에는 둘 다 0입니다.Amal은 이 숫자에 대해 몇 가지 작업을 수행하려고 합니다. 각 연산을 수행하기 전에 양의 정수 k가 선택되어 다음 연산 중 하나를 수행하는 데 사용됩니다. -

  • 와 b 모두에 숫자 k를 추가하거나

  • 숫자 k를 b에 더하고 b에서 k를 빼거나

  • b에 숫자 k를 더하고 k를 빼십시오.

우리는 a와 b를 c와 같게 만드는 데 필요한 최소 연산 수를 찾아야 합니다. 가능하지 않으면 -1을 반환합니다.

따라서 입력이 c =3과 같으면; d =5이면 출력은 2가 됩니다. 왜냐하면 k =1의 경우 숫자 (1, 1)을 얻고 k =8의 경우 쌍은 (-7, 9)가 될 수 있고 k =7의 경우 다음과 같을 수 있기 때문입니다. (0, 2) 및 k =3의 경우(3, 5)

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

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

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#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;
}

입력

3, 5

출력

2