一组简单一点的题目(六) T - 整数解

王嬷嬷
• 阅读 1296

题目:T - 整数解
有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程。
例如:x + y = 9,x * y = 15 ? 找不到这样的整数x和y
1+4=5,1*4=4,所以,加起来等于5,乘起来等于4的二个整数为1和4
7+(-8)=-1,7*(-8)=-56,所以,加起来等于-1,乘起来等于-56的二个整数为7和-8
Input
输入数据为成对出现的整数n,m(-10000<n,m<10000),它们分别表示整数的和与积,如果两者都为0,则输入结束。
Output
只需要对于每个n和m,输出“Yes”或者“No”,明确有还是没有这种整数就行了。
Sample Input
9 15
5 4
1 -56
0 0
Sample Output
No
Yes
Yes

思路:因为这个如果一个一个循环枚举进行会非常耗时间,所以可以考虑用数学公式进行;

新技巧:有些题目,与数学的计算有关时,可以利用数学公式进而进行一系列的计算;(在某些时候学会运用数学公式);

代码:

#include<iostream>
#include<cstdio>
#include<cmath>

using namespace std;

int main()
{
    int i,j;
    int m,n;
    while(cin >> n >> m && (n!=0 || m!=0)){//这个位置的都是0才退出,即可以允许有一方为0.
        int tag=0;                        //退出的条件一定要注意,即用&&还是用||,要注意好
        int x1,y1,x2,y2;
        if((n*n-4*m)>=0){
            x1=(int)(n+sqrt(n*n-4*m))/2;
            y1=n-x1;
            y2=(int)(n-sqrt(n*n-4*m))/2;
            x2=n-y2;
            if(x1*y1==m||x2*y2==m)//这边的判断要特别主要,两种情况都要进行判断
                tag=1;            //有可能是一方成立的;
        }
        if(tag) cout<< "Yes" << endl;
        else cout << "No" << endl;
    }
    return 0;
}
点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
先知 先知
4年前
C 语言代码大全
1两个数组的合并题目描述已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。输入输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m,n均小于等于1000000。输出输出合并后的mn个整数,数据之间用空格隔开。输出占一行。样例输入4
DaLongggggg DaLongggggg
4年前
python刷题-特殊回文数
问题描述  123321是一个非常特殊的数,它从左边读和从右边读是一样的。  输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。输入格式  输入一行,包含一个正整数n。输出格式  按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定 
BichonCode BichonCode
4年前
双指针问题
一、双指针之左右指针相关题目1.1题目要求:给定一个升序排列的整数数组,找到两个数,使它们的和等于给定的数,有且仅有一个满足条件的解,返回索引。题目分析:需要两个指针,一个指向开头,一个指向末尾,然后向中间遍历,如果指向的两个数相加正好等于target的话,直接返回两个指针的位置即可,若小于target,左指针右移一位,若大于target,右
Wesley13 Wesley13
3年前
MySQL中的数值函数
常用数值函数函  数功  能ABS(x)返回数值x的绝对值CEIL(x)返回大于或等于x的最小整数值FLOOR(x)返回小于或等于x的最大整数值MOD(x,y)返回x除以y的余数RAND()返回0~1内的随机数ROUND(x,y)返回x四舍五入后有y位小数的数值TRUNCATE(
Stella981 Stella981
3年前
279. 完全平方数 leetcode JAVA
题目:给定正整数 _n_,找到若干个完全平方数(比如 1,4,9,16,...)使得它们的和等于_n_。你需要让组成和的完全平方数的个数最少。示例 1:输入:_n_12输出:3解释:12444.示例2:输入:_n_13输出:2解释:134
Stella981 Stella981
3年前
LeetCode 5561. 获取生成数组中的最大值
文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi
Stella981 Stella981
3年前
LeetCode 69 题
1.题目要求实现 intsqrt(intx) 函数。计算并返回 _x_ 的平方根,其中 _x_ 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1:输入:4输出:2示例2:输入:8输出:2说
Stella981 Stella981
3年前
CodeForces165E 位运算 贪心 + 状压dp
http://codeforces.com/problemset/problem/165/E题意 两个整数 _x_ 和 _y_ 是 兼容的,如果它们的位运算"AND"结果等于0,亦即 _a_ & _b_  0 。例如,数 90 (10110102) 和 36 (1001002) 是兼容的,因为 10110102 & 1001002  0
Wesley13 Wesley13
3年前
MYSQL表分区支持的函数清单
Mysql5.1支持的partition函数1.数学函数ABS(x)    返回x的绝对值CEILING(x)/CEIL(x)返回大于或等于x的最小整数FLOOR(x)    返回小于或等于x的最大整数MOD(x,y)    返回x除以y以后的余数2.日期时间函数EXTRACT(typeFROMd)    从
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(