剛開始想從(x,x,x)進過一些方法得到(y,y,y),但是想了好多方法都不行。後來發現反過來想比較簡單從(y,y,y)開始,按照三角形的要求得到下一個爲(2*y-1,y,y),然後一直這樣做下去。最後當三角形邊最小的長度大於x時,就可以結束了。
#include<bits/stdc++.h>
using namespace std;
int x,y,ans1,ans;
void dfs(int a,int b,int c)
{
//printf("%d %d %d %d\n",ans,a,b,c);
if(c>=x) return ;
c=b+a-1;
if(a<c) swap(a,c);
if(a<b) swap(a,b);
if(b<c) swap(b,c);
ans++;
dfs(a,b,c);
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d",&x,&y);
ans=0;
dfs(y,y,y);
printf("%d\n",ans);
return 0;
}