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