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

Mã C ++ để giảm thiểu sự mệt mỏi sau cuộc họp

Giả sử chúng ta có hai số a và b. Hai người bạn đang ở vị trí x =a và x =b trên trục OX. Mỗi người bạn có thể di chuyển theo một hàng dọc theo bất kỳ hướng nào không giới hạn số lần. Khi di chuyển, độ mệt của một bạn thay đổi theo quy luật sau:động tác thứ nhất tăng độ mệt lên 1, chuyển động thứ hai tăng độ mệt lên 2 và cứ tiếp tục như vậy. Hai trong số họ muốn gặp một điểm nguyên trên trục OX. Chúng tôi phải tìm tổng mức độ mệt mỏi tối thiểu mà họ nên đạt được.

Vì vậy, nếu đầu vào giống như a =5; b =10, thì đầu ra sẽ là 9, bởi vì một trong những cách tối ưu là sau đây. Bạn đầu tiên phải di chuyển ba bước sang bên phải, và người bạn thứ hai bước sang trái hai bước. Vì vậy, tổng số mệt mỏi trở thành 1 + 2 + 3 + 1 + 2 =9.

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 -

ans := |a - b|
sum := ans / 2
return (sum + (ans mod 2)) * (sum + 1)

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 a, int b){
   int ans = abs(a - b);
   int sum = ans / 2;
   return (sum + (ans % 2)) * (sum + 1);
}
int main(){
   int a = 5;
   int b = 10;
   cout << solve(a, b) << endl;
}

Đầu vào

5, 10

Đầu ra

9