整數解
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20680 Accepted Submission(s): 7238
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
例如:
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
Author
qianneng
Source
Recommend
#include<stdio.h>
int main()
{
int n,m,i,j,p;
while(scanf("%d%d",&n,&m)!=EOF&&(m!=0||n!=0))
{
j=0;
if(m<0)
{
m=-m;
j=1;
}
for(i=-m;i<=m;i++)
{
p=0;
if(i==0)
continue;
else if(m%i!=0)
continue;
else
{
if((m/i+i==n&&j==0)||(-m/i+i==n&&j==1))
{
p=1;
break;
}
}
}
if(p)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
//無符號數怎麼來確定他的循環限制條件 如果用-10000到10000for循環應該會超時