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)

示例

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

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

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输入

5, 10

输出

9

更新于:2022年3月29日

浏览量:114

开启你的职业生涯

完成课程获得认证

开始学习
广告