Description
白娘子与许仙突破重重阻碍,终于可以重逢在断桥之上。
假设断桥是具有整数坐标的点上的无限的坐标轴。许仙与白娘子,其中一个人在x1 = a上,另一个在x2 = b上。
他们俩可以在任何方向上沿着线路移动一次无限次。当他们移动时,期中一个人的疲倦根据以下规则改变:第一步将疲劳增加1,第二步增加疲劳2,第三步增加3,依此类推。例如,如果朋友首先向左移动,然后向右移动(返回到同一点),然后再向左移动他的疲劳等于1 + 2 + 3 = 6。
许仙与白娘子想要在整数点上见。如果他们在同一点上相遇,求出他们的最小总疲劳度。
Input
第一行包含单个整数a(1≤a≤1000) - 许仙的初始位置。
第二行包含单个整数b(1≤b≤1000) - 白娘子的初始位置。
保证a≠b。
Output
如果他们俩在一整数点上相遇,则输出最小疲惫值。
input Copy
101 99
output Copy
2
input Copy
5 10
output Copy
9
解题思路:小小贪心,没什么难度,看下去就能理解吧(或许)
ac代码:
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int a,b; cin >> a >> b; int ans=0; int x=abs(a-b);//x记录两人相隔的距离 int cnt_a=1,cnt_b=1; //cnt_a记录白娘子走一步所增加的疲劳值,cnt_b记录许仙走一步所增加的疲劳值 while(x!=0) { if(cnt_a<=cnt_b)//如果白娘子所需的疲劳值少,就让白娘子走 { x--; ans +=cnt_a; cnt_a++; }else//如果许仙所需的疲劳值少,就让许仙走 { x--; ans += cnt_b; cnt_b++; } } cout << ans << endl; return 0; }