首页 > 其他分享 >CF317A Perfect Pair 题解

CF317A Perfect Pair 题解

时间:2022-12-25 08:11:13浏览次数:59  
标签:Perfect maxx cout 题解 ll Pair define

题目传送门

题目大意

给定一对数 \(x\) 和 \(y\),允许把其中的一个数换成 \(x+y\),问把 \(x\) 或 \(y\) 变成大于或等于 \(m\) 的数,需要几次操作。

解题思路

  • 首先可以判断 \(x\) 或 \(y\) 是否大于 \(m\),如果是,就是不用进行任何操作就可以比 \(m\) 大,所以可以直接输出 \(0\);

  • 然后在 \(x\) 或 \(y\) 是小于 \(m\) 的情况下再判断 \(x\) 和 \(y\) 是否小于或等于零,如果是,那么 \(x\) 与 \(y\) 的和就永远不可能比 \(x\) 或 \(y\) 大,所以可以直接输出 \(-1\);

  • 如果以上情况都不是,可以判断一下 \(x\) 或 \(y\) 是否有负数,如果有,就一直加 \(y\),把它变成正数;之后就可以一直让 \(x\) 和 \(y\) 之中小的数加上大的数,直到大于 \(m\) 为止。

代码

#include<bits/stdc++.h>
#define GRET(code) exit(code)
#define ll long long
using namespace std;
ll x,y,m,ans=0;
void maxx(ll x,ll y,ll m){
	if(x>=m||y>=m){
		cout<<0;
		GRET(0);
	}
	else if(x<=0&&y<=0){
		cout<<-1;
		GRET(0);
	}
	else {
		if(x<0){
			ans+=(-x)/y;
			x+=y*((-x)/y);
		} 
		if(y<0){
			ans+=(-y)/x;
			y+=x*((-y)/x);
		}
	}
	while(x<m&&y<m){
		if(x<y) x+=y;
		else y+=x;
		ans++;
	}
}
int main(){
	cin>>x>>y>>m;
	maxx(x,y,m);	
	cout<<ans;
	return 0;
}

标签:Perfect,maxx,cout,题解,ll,Pair,define
From: https://www.cnblogs.com/zzyblog0619/p/17003662.html

相关文章

  • UVA12459 Bees' ancestors 题解
    题目传送门题目大意雌蜂有一个父亲一个母亲,而雄蜂只有母亲。计算出Willy的祖先中,哪一代有多少祖先。解题思路已知Willy为雄蜂,从Willy开始向前推:有一个母亲(1);......
  • CF334A Candy Bags 题解
    题目传送门题目大意:给你\(n^2\)颗糖,分给\(n\)人,使每个人的权值相等(第\(i\)块的权值为\(i\)),输出第\(i\)个人选的糖果集合,注意题目中说\(n\)为偶数。解题思路......
  • CF465B Inbox (100500) 题解
    题目传送门题目大意有已读或未读的邮件,可以进行以下操作:读完邮件后回到邮件列表;回到列表后选取任意一个未读邮件读;读完一个邮件之后读这个邮件的下一个或者上一个邮......
  • P8752 [蓝桥杯 2021 省 B2] 特殊年份 题解
    题目传送门题目大意输入\(5\)个年份,请计算这里面有多少个千位和十位相等,个位比百位大\(1\)的年份。解题思路将每一个年份按分离数位规则把每一位都分离,赋给\(a,......
  • AT_past202010_b 電卓 题解
    题目传送门题目大意给定\(x\)和\(y\),求$\dfrac{x}{y}$。舍弃小数点后第三及以下位。解题思路首先判断$\dfrac{x}{y}$是否可以成立,也就是判断\(y\)是否等于......
  • AT_pakencamp_2021_day2_b Pasokon Power 题解
    题目传送门题目大意输入\(a\)和\(b\),输出\(a^2\cdotb\)的值。解题思路计算\(a^2\cdotb\)的值。用pow函数,表示\(a\)的\(b\)次幂,再乘\(b\),最后不要忘了......
  • AT_pakencamp_2020_day2_a Participants 题解
    题目传送门题目大意集训有\(2\)天,\(2\)天中参加\(1\)天以上的人数最少是多少,最多是多少?解题思路参加一天以上的人数最少就是\(A\)和\(B\)的最大值,而最多就是......
  • T_pakencamp_2021_day2_a Participants 2 题解
    题目传送门题目大意输出帕研集训2021的参加人数。解题思路输出51。代码C++:#include<iostream>intmain(){::std::cout<<51<<::std::endl;retur......
  • AT_pakencamp_2019_day3_b 多数決 题解
    题目传送门题目大意给定\(n\)个字符串,如果black比white的数量多,就输出black,否则输出white。解题思路如果第\(i\)个字符串是black,black的数量加一,如果是wh......
  • AT_pakencamp_2018_day2_a ひふみ (Hihumi) 题解
    题目传送门题目大意从\(1\)到\(N\)数数的时候,会数几个整数呢(除123外)?解题思路如果\(N\)小于123,就不会数到123,所以数了\(N\)次。否则,就会数到123,所以数的......