题解 CF317A 【Perfect Pair】

· · 题解

讲道理,这个题其实真没什么好说的,就是直接模拟

基本思路很简单:每次挑小的换成和。

具体看代码吧

#include<bits/stdc++.h>
using namespace std;
typedef long long llint;
llint x,y,m,ans;
int main(){
    cin>>x>>y>>m;
    if (x>=m||y>=m){
        puts("0");
        return 0;
    }//如果直接符合,直接输出
    if (x<=0&&y<=0){
        puts("-1");
        return 0;
    }//如果x、y都负,则不可能变成完美
    if (x>y)swap(x,y);//如果x比y大,换一下
    if (x<0){
        ans+=(-x)/y;
        x+=(-x)/y*y;
    }//如果有个负的,想办法把他弄成正的(方法:始终加y)
    while(x<m&&y<m){
        if (x>y) swap(x,y);
        x+=y;
        ans++;
    }//模拟
    cout<<ans<<endl;
    return 0;
}