codeforces 712C C. Memory and De-Evolution(贪心)

时间:2020-12-11 23:09:05

题目链接:http://codeforces.com/problemset/problem/712/C

题目大意:

  给连个值x,y (3 ≤ y < x ≤ 100 000), x,y都为等边三角形。从y等边三角形 每次修改一条边,且修改后的三个边还能组成一个三角形(两边之和大于第三边)。问修改几次能够得到x为边的等边三角形。

例如:

  输入: 22 4  输出: 6

  codeforces 712C C. Memory and De-Evolution(贪心)

解题思路:

  从y->x ,定义三个边y1=y2=y3=y,

  每次修改一条边 y1=y2+y3-1(两边之和大于第三遍) 修改++ 如果y1>=x break;

  修改一条边 y2=y1+y3-1 修改++ 如果y2>=x break;

  修改一条边 y3=y1+y2-1 修改++ 如果y3>=x break;

  可以发现,如果(y1,y2,y3)有一个边>=x,则还需两步即可完成。

  输出 修改+2

AC Code:

 #include<bits/stdc++.h>
using namespace std;
int main()
{
int x,y,ans;
while(scanf("%d%d",&x,&y)!=EOF)
{
ans=;
int y1,y2,y3;
y1=y2=y3=y;
while(y1!=x&&y2!=x&&y3!=x)
{
y1=y2+y3-;
++ans;
if(y1>=x)break;
y2=y1+y3-;
++ans;
if(y2>=x)break;
y3=y1+y2-;
++ans;
if(y3>=x)break;
}
cout<<ans+<<endl;
}
return ;
}