201412021711-hd-整数解

整数解

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 22403    Accepted Submission(s): 7790

Problem Description

有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程。

例如:

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<stdio.h>
int a[20050][2];
int main()
{
	int n,m;
	int i,j,k,ok;
	while(scanf("%d%d",&n,&m)&&(n!=0||m!=0))
	{
		k=0;
		if(m<0)
		{
			k=1;
			m=-m;
		}
		for(i=1,j=0;i*i<=m;i++)
		{
			if(m%i==0)
			{
				if(k==0)
				{
					a[j][0]=i;
					a[j][1]=m/i;
					j++;
					a[j][0]=-i;
					a[j][1]=-m/i;
					j++;
				}
				else
				{
					a[j][0]=-i;
					a[j][1]=m/i;
					j++;
					a[j][0]=i;
					a[j][1]=-m/i;
					j++;
				}
			}//注意考虑到符号,因为存在负数
		}
		ok=0;
		for(i=0;i<j;i++)
		    if(a[i][0]+a[i][1]==n)
		    {
		    	ok=1;
		    	break;
		    }
		if(ok==1)
		    printf("Yes\n");
		else
		    printf("No\n");
	}
	return 0;
} 

时间: 2024-12-26 04:10:16

201412021711-hd-整数解的相关文章

怎么用HD Tune检测硬盘坏道

HD Tune软件不仅小巧而且很易使用,是一款检测电脑硬盘的优良工具.不仅是电脑硬盘,包括移动硬盘在内一样可以检测.那么,如何使用HD Tune呢?如何使用HD Tune检测磁盘坏道呢? 工具/原料 HD Tune软件一枚 使用HD Tune检查硬盘坏道 1.百度搜索下载HD Tune软件,注意:尽量选择系统之家官网上下载这类软件,因为系统之家上的软件不会捆绑的流氓软件 2.软件打开之后,界面如图,最上方显示硬盘的厂家信息,图示红色遮挡区 3.点击选项卡切换至错误扫描,如图,然后在红框位置,尽量

求解线段上有多少个整数解

在一个直角坐标系上,从(0,0)到(N,M)画一条线段,求线段覆盖的整数点个数 在一个直角坐标系上,从(0,0)到(N,M)画一条线段,比如N=6,M=4:如图:图中的线段就覆盖了3个整点,分别是(0,0)(3,2)(6,4).类似地,如果N=M=3时线段就覆盖了4个整点(0,0)(1,1)(2,2)(3,3)现在给出N和M,求线段(0,0)-(N,M)覆盖的整点个数. 输入文件:第一行一个整数N,第二行一个整数M.输出文件:一行一个数,为覆盖的整点个数. 样例输入:812 样例输出 5 GCD

uva 12452 Plants vs. Zombies HD SP (树DP)

Problem I: Plants vs. Zombies HD Super Pro Plants versus Zombies HD Super Pro is a game played not a grid, but on a connected graph G with no cycles (i.e., a tree). Zombies live on edges of the tree and chew through edges so that tree falls apart! Pl

高斯消元 求整数解模版

#include <iostream> #include <string.h> #include <cmath> using namespace std; const int maxn = 105; int equ, var; // 有equ个方程,var个变元.增广阵行数为equ, 分别为0到equ - 1,列数为var + 1,分别为0到var. int a[maxn][maxn]; int x[maxn]; // 解集. bool free_x[maxn]; //

OSX: 解决10.10 Yosemite Developer Preview 2安装后的Recovery HD看不见的问题

OS X 10.10 Yosemite Developer Preview 2,下面简称10.10DP2,安装之后,有可能出现10.10的恢复盘(Recovery HD)看不见的问题.这是因为它的一个设置错误,下面我们用比较直观的方法来解决它. 这是修复后的启动选项,其中显示的Recovery-10.10 清楚点的 首先,开启磁盘工具的Debug菜单. 无论是从哪个磁盘启动,都可以操作,运行下面命令: defaults write com.apple.DiskUtility DUDebugMen

[NBUT 1224 Happiness Hotel 佩尔方程最小正整数解]连分数法解Pell方程

题意:求方程x2-Dy2=1的最小正整数解 思路:用连分数法解佩尔方程,关键是找出√d的连分数表示的循环节.具体过程参见:http://m.blog.csdn.net/blog/wh2124335/8871535 当d为完全平方数时无解 将√d表示成连分数的形式,例如: 当d不为完全平方数时,√d为无理数,那么√d总可以表示成: 记 当n为偶数时,x0=p,y0=q:当n为奇数时,x0=2p2+1,y0=2pq 求d在1000以内佩尔方程的最小正整数解的c++打表程序(正常跑比较慢,这个题需要离

Radeon HD 7850 vs Radeon R9 270X

Radeon HD 7850 vs Radeon R9 270X HW compare Intro The Radeon HD 7850 comes with a GPU core speed of 860 MHz, and the 2048 MB of GDDR5 RAM runs at 1200 MHz through a 256-bit bus. It also is made up of 1024 SPUs, 64 Texture Address Units, and 32 Raster

HDU 2092 整数解 --- 水题

x+y = n, x*y = m; y = n - x; x * ( n - x) = m nx - x^2 = m; x^2 - nx + m = 0; △ = sqrt(n^2 - 4m) 要有整数解即△需要为可开方数即可. /* HDU 2092 整数解 --- 水题 */ #include <cstdio> #include <cmath> int main() { double n, m; while (scanf("%lf%lf", &n,

循环-13. 求特殊方程的正整数解

循环-13. 求特殊方程的正整数解(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解. 输入格式: 输入在一行中给出正整数N(<=10000). 输出格式: 输出方程X2+Y2=N的全部正整数解,其中X<=Y.每组解占1行,两数字间以1空格分隔,按X的递增顺序输出.如果没有解,则输出“No Solution”. 输入样例1: 884 输出

整数解(杭电2092)

整数解 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22049    Accepted Submission(s): 7693 Problem Description 有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程. 例如: