C++代码:求见面后的最小疲劳度


假设我们有两个数字a和b。两位朋友分别位于OX轴上的x=a和x=b处。每位朋友都可以沿直线向任意方向移动一个单位,次数不限。移动时,朋友的疲劳度会根据以下规则变化:第一次移动增加1点疲劳度,第二次移动增加2点疲劳度,以此类推。他们两人想在OX轴上的某一个整点相遇。我们需要找到他们应获得的最小总疲劳度。

因此,如果输入为a = 5;b = 10,则输出为9,因为一种最佳方法如下:第一位朋友向右移动三步,第二位朋友向左移动两步。因此,总疲劳度为1 + 2 + 3 + 1 + 2 = 9。

步骤

为了解决这个问题,我们将遵循以下步骤:

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

示例

让我们看下面的实现来更好地理解:

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

输入

5, 10

输出

9

更新于:2022年3月29日

浏览量:114

开启你的职业生涯

完成课程获得认证

开始学习
广告