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

โค้ด C++ หาการดำเนินการน้อยสุดได้ค่า c และ d

สมมติว่าเรามีตัวเลขสองจำนวน c และ d อมลมี a และ b เริ่มต้นเป็น 0 ทั้งคู่ ต้องการดำเนินการ ก่อนแต่ละรอบ เลือกจำนวนเต็มบวก k ใช้ทำหนึ่งใน:

  • บวก k ให้ a และ b ทั้งคู่
  • บวก k ให้ a ลบ k จาก b
  • บวก k ให้ b ลบ k จาก a

หาจำนวนรอบน้อยสุดทำให้ a,b เท่ากับ c,d ถ้าไม่ได้ส่ง -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) เป็นเลขคี่:
    return -1
else if c == 0 และ d == 0:
    return 0
else if c == d:
    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