Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C++ เพื่อค้นหาการดำเนินการขั้นต่ำเพื่อสร้างตัวเลข c และ d


สมมติว่าเรามีตัวเลขสองตัว c และ d Amal มีสองตัวเลข a และ b ในตอนแรกทั้งคู่เป็นศูนย์ Amal ต้องการดำเนินการบางอย่างกับพวกเขา ก่อนดำเนินการแต่ละอย่าง จะมีการเลือกจำนวนเต็มบวก k ซึ่งจะถูกใช้เพื่อดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้ -

  • เติม k ให้ทั้ง a และ b หรือ

  • บวกเลข k กับ a แล้วลบ k ออกจาก b หรือ

  • บวกเลข k กับ b แล้วลบ k ออกจาก a

เราต้องหาจำนวนขั้นต่ำของการดำเนินการที่จำเป็นในการทำให้ 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