大兴安岭地区网站建设_网站建设公司_SQL Server_seo优化
2025/12/28 13:11:09 网站建设 项目流程

变幻莫测

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

给定两个整数X , Y X,YX,Y,你可以任意顺序多次执行以下两种操作之一:

1.​交换( X , Y ) = ( Y , X ) (X,Y)=(Y,X)(X,Y)=(Y,X)

2.​变换( X , Y ) = ( X + Y , X − Y ) (X,Y)=(X+Y,X−Y)(X,Y)=(X+Y,XY)

求使X = Y X=YX=Y成立所需的最少操作次数;如无法实现,输出− 1 −11

输入描述:

输入一行,包含两个整数X , Y ( − 100 ≤ X , Y ≤ 100 ) X,Y (−100≤X,Y≤100)X,Y(100X,Y100)

输出描述:

输出一个整数——使X = Y X=YX=Y所需的最少操作次数;如无法实现,输出− 1 −11

示例1

输入:

5 8

输出:

-1

说明:

( 5 , 8 ) (5,8)(5,8)无论如何操作,无法使两者相等,故输出− 1 −11

示例2

输入:

5 -5

输出:

3

说明:

一种最优操作序列为:

1. 1.变换:( 5 , − 5 ) → ( 0 , 10 ) (5,−5)→(0,10)(5,5)(0,10)
2. 2.交换:( 0 , 10 ) → ( 10 , 0 ) (0,10)→(10,0)(0,10)(10,0)
3. 3.变换:( 10 , 0 ) → ( 10 , 10 ) (10,0)→(10,10)(10,0)(10,10)

3 33步使得X = Y X=YX=Y

解题思路

首先直接判断初始状态,若X与Y相等则无需操作,输出0 00;若Y YY0 00,执行一次变换操作即可让X = X + 0 = X X=X+0=XX=X+0=XY = X − 0 = X Y=X-0=XY=X0=X,输出1 11;若X XX0 00,先执行交换操作将状态变为( Y , 0 ) (Y,0)(Y,0),再执行变换操作使两者相等,共2 22步,输出2 22;若X XXY YY互为相反数( X + Y = 0 ) (X+Y=0)X+Y=0,需按示例的三步操作(变换→交换→变换)实现相等,输出3 33;其余情况经分析无法通过交换和变换操作使X = Y X=YX=Y,输出− 1 -11。该方法通过总结所有可实现相等的边界条件,无需模拟操作过程,以O ( 1 ) O(1)O(1)的时间复杂度直接判断,适配输入范围( X 、 Y ∈ [ − 100 , 100 ] ) (X、Y∈[-100,100])XY[100,100],精准得到最少操作次数或判定无解。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e5+10;intmain(){intx,y;cin>>x>>y;if(x==y)cout<<0<<endl;elseif(y==0)cout<<1<<endl;elseif(x==0)cout<<2<<endl;elseif(x+y==0)cout<<3<<endl;elsecout<<-1<<endl;return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询