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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP