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
广告