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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.