急,求大佬看看。
输入n,m。n为x+y,m为xy。求nm是否符合此要求。求详细解答和思路。 if (n == x+y)printf("符合要求");
if (m == x*y)
printf("符合要求");
是这样的吗 本帖最后由 XFCoding 于 2020-5-28 14:53 编辑
楼主题目没有描述清楚,我这里做的是给定两个非负整数 n,m。是否能找到非负整数x,y使得 x+y= n, x*y = m。找出这样的x和y。
不知道题主是不是这意思,
思路比较简单,迭代器i从0到n去遍历,这样肯定是满足i + (n - i) = n, 再去判断 i * (n - i)是否等于m即可。
#include<stdio.h>
void checkedFine(int n, int m);
int main(){
int n,m;
printf("请输入n和m使用空格分隔:\n");
scanf("%d %d",&n,&m);
checkedFine(n,m);
return 0;
}
void checkedFine(int n, int m){
int count = 0;
for(int i =0; i <= n; i++){
if(i*(n-i) == m){
printf("第%d对符合条件的解是:x = %d,y= %d\n",++count,i,n-i);
}
}
if(count == 0){
printf("没有符合条件的x和y\n");
}
} XFCoding 发表于 2020-5-28 14:48
楼主题目没有描述清楚,我这里做的是给定两个非负整数 n,m。是否能找到非负整数x,y使得 x+y= n, x*y = m。 ...
其实题目应该是,判断n和m是否存在,存在就输出yes就行了,但是有范围(-10000<n,m<10000),也是用这种方法吗? jack陈ZJ 发表于 2020-5-28 15:18
其实题目应该是,判断n和m是否存在,存在就输出yes就行了,但是有范围(-10000
n,m 不是你输入的吗肯定存在啊。。。应该是判断是否有x,y使得n,m满足条件吧,你能把题目原原本本打出来看看不,我都迷糊了。 你这不就是求一元二次方程的根么? 题目:有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数。
例如:
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”,明确有还是没有这种整数就行了。 赚小钱 发表于 2020-5-28 21:47
你这不就是求一元二次方程的根么?
我也想过,但是就是想不通,求解释。 jack陈ZJ 发表于 2020-5-29 11:08
我也想过,但是就是想不通,求解释。
你都想到了一元二次方程,用韦达定理它不香吗。 赚小钱 发表于 2020-5-29 12:00
你都想到了一元二次方程,用韦达定理它不香吗。
我是不懂这个题目与一元二次方程有什么联系,能详细说说吗。 jack陈ZJ 发表于 2020-5-29 15:16
我是不懂这个题目与一元二次方程有什么联系,能详细说说吗。
展开 (x - x1)(x - x2) = 0
然后用待定系数 ax^2 + bx + c = 0
可以得出:
1. x1 + x2 与 (a, b, c) 的关系
2. x1 乘以 x2 与 (a, b, c) 的关系
找一下初中课本 赚小钱 发表于 2020-5-29 15:31
展开 (x - x1)(x - x2) = 0
然后用待定系数 ax^2 + bx + c = 0
可以得出:
懂了,你看我代码写的对不对。
int n,m;
scanf("%d %d",&n,&m);
if((n*n-4*m)>=0)printf("Yes\n");
elseprintf("NO\n")
jack陈ZJ 发表于 2020-5-29 22:45
懂了,你看我代码写的对不对。
int n,m;
scanf("%d %d",&n,&m);
good job.
格式再好一些,就完美了。
页:
[1]