题解 CF317A 【Perfect Pair】

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

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

具体看代码吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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;
}