首页 > 其他分享 >和与积 题解 简单二分查找

和与积 题解 简单二分查找

时间:2023-06-10 20:45:56浏览次数:39  
标签:二分 le 题解 long times 查找

题目大意:

给定两个整数 \(a(2 \le a \le 2 \times 10^9)\) 和 \(b(1 \le b \le 10^{18})\)。

判断是否存在两个正整数 \(x\) 和 \(y\),同时满足如下两个条件:

  1. \(x + y = a\)
  2. \(x \times y = b\)

解题思路:

用 \(a - x\) 表示 \(y\),可以得到面积的表达式为 \(x \times (a - x)\),然后可以发现在区间 \([1, \frac{a}{2}]\) 范围内,\(x \times (a-x)\) 随着 \(x\) 的增大而增加,具有单调性,可以二分。

比如,\(a = 50\) 时,在区间 \([1, 25]\) 范围内 \(x\) 和 \(x \times (a - x)\) 的对应关系如下图所示:

然后就发现可以二分查找答案。

示例程序:

#include <bits/stdc++.h>
using namespace std;

int T;
long long a, b;

bool check() {
    long long l = 1, r = a / 2;
    while (l <= r) {
        long long mid = (l + r) / 2;
        if (mid * (a - mid) == b)
            return true;
        else if (mid * (a - mid) < b)
            l = mid + 1;
        else
            r = mid - 1;
    }
    return false;
}

int main() {
    cin >> T;
    while (T--) {
        cin >> a >> b;
        puts(check() ? "YES" : "NO");
    }
    return 0;
}

标签:二分,le,题解,long,times,查找
From: https://www.cnblogs.com/quanjun/p/17471901.html

相关文章

  • 佳佳的 Fibonacci 题解
    佳佳的Fibonacci题解题目:题解:数据范围很大,暴力超时,考虑的是矩阵优化递推,关键是求出递推矩阵,然后结合矩阵快速幂求解如何求解递推矩阵?我们首先知道斐波那契的递推式:f[i]=f[i-1]+f[i-2]——>①然后题目中给我们了T(n)的递推式:T(n)=F[1]+2F[2]+3F[3]+...+nF[n]——>②考......
  • 题解 NOD2207C【不降序列】
    problem给出n个数组A1​到An​,数组中的元素为1到M之间的数字。数组之间也存在字典序,即从第一个数开始逐位比较,一旦某个数字大于另一个,则数组的字典序大于另一个,如果某一个是另一个的前缀,则前缀的字典序更小。你可以选择一些大于0的数字执行减法操作,一旦选中某个数......
  • 题解 NOD2207D【电报】
    前置知识:高斯消元已知\(n\)元线性一次方程组。关于\(x_1,x_2,\cdots,x_n\)。\[\begin{cases}a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=b_1\\a_{2,1}x_1+a_{2,2}x_2+\cdots+a_{2,n}x_n=b_2\\\cdots\\a_{n,1}x_1+a_{n,2}x_2+\cdots......
  • Python+pandas查找前5位成绩最高的同学与前5个最高成绩的同学
    问题描述:查找前5位成绩最高的同学与前5个最高成绩的同学。参考代码(建议使用pandas0.24.0以上版本):运行结果:公众号“Python小屋”......
  • 查找
    #include<stdio.h>#include<stdlib.h>#defineMAX100intbinarySearch(intlist[],intn,intkey,int*count){ intlow=0,high=n-1,num=0; intt=(low+high)/2; while(low<=high){ if(list[t]==key){ num++;......
  • [SHOI2011]双倍回文 题解
    [SHOI2011]双倍回文题解看了一些写回文自动机的大佬的代码,我深感敬畏,于是我转身向Manacher走去现在荣登最优解第一页……说实话,这个方法的复杂度是很玄学的,但是加了一些优化之后,就几乎不可能被卡到\(O(n^2)\)了。具体思路如下:预处理字符串部分就略过吧我们预先跑一......
  • P7959 [COCI2014-2015#6] WTF 题解
    P7959[COCI2014-2015#6]WTF题解呃,是一道DP题说实话,原题实际上是不要输出一种方法的……但是似乎放这道题的人想增加一点难度?这里有两种做法,但都是DP。预备观察我们首先观察一些性质,以方便解题。循环不变:我们可以观察到,在\(n\)次变换后,序列会还原。也就是说,两个......
  • 查找一之顺序查找、二分查找、分块查找
    1、概念:在一些有序的或无序的数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找,也就是给定一个值,在查找表中确定一个关键字等于给定值的记录或数据元素。2、平均查找长度(后期可能会增加)3、查找长度分为成功和失败两种4、顺序查找1、主要思想:将查找值......
  • Python查找任意字符串中只出现一次的字符(2016奇虎笔试题)
    '''  程序功能:  编写函数,给定任意字符串,找出其中只出现一次的字符,  如果有多个这样的字符,就全部找出。'''importsysdefsearchOne(s):#创建空字典d=dict()#遍历字符串,并分别记录每个字符的出现次数forchins:#这里重点演示字典的ge......
  • 题解 BZOJ4399 魔法少女LJJ
    前言XXX:你瞅你长得那个B样,俺老孙就(氧化钙)......这魔法(J8)少女能不能去死啊啊啊啊啊啊啊啊啊啊......正文"LJJ你是来搞笑的吧"你说得对,但是这数据就是骗人的.首先看题面:然后看样例:最后看数据范围:我惊奇的发现\(c\le7\)!家人们我真难绷qaq...问题分析显......