jack陈ZJ 发表于 2020-5-28 11:30:09

急,求大佬看看。

输入n,m。n为x+y,m为xy。求nm是否符合此要求。求详细解答和思路。

chxchxkkk 发表于 2020-5-28 11:33:57

if (n == x+y)
   printf("符合要求");
if (m == x*y)
printf("符合要求");
是这样的吗

XFCoding 发表于 2020-5-28 14:48:52

本帖最后由 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");
        }
}

jack陈ZJ 发表于 2020-5-28 15:18:07

XFCoding 发表于 2020-5-28 14:48
楼主题目没有描述清楚,我这里做的是给定两个非负整数 n,m。是否能找到非负整数x,y使得 x+y= n, x*y = m。 ...

其实题目应该是,判断n和m是否存在,存在就输出yes就行了,但是有范围(-10000<n,m<10000),也是用这种方法吗?

XFCoding 发表于 2020-5-28 15:35:10

jack陈ZJ 发表于 2020-5-28 15:18
其实题目应该是,判断n和m是否存在,存在就输出yes就行了,但是有范围(-10000

n,m 不是你输入的吗肯定存在啊。。。应该是判断是否有x,y使得n,m满足条件吧,你能把题目原原本本打出来看看不,我都迷糊了。

赚小钱 发表于 2020-5-28 21:47:35

你这不就是求一元二次方程的根么?

jack陈ZJ 发表于 2020-5-29 11:05:17

题目:有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数。
例如:
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”,明确有还是没有这种整数就行了。

jack陈ZJ 发表于 2020-5-29 11:08:59

赚小钱 发表于 2020-5-28 21:47
你这不就是求一元二次方程的根么?

我也想过,但是就是想不通,求解释。

赚小钱 发表于 2020-5-29 12:00:18

jack陈ZJ 发表于 2020-5-29 11:08
我也想过,但是就是想不通,求解释。

你都想到了一元二次方程,用韦达定理它不香吗。

jack陈ZJ 发表于 2020-5-29 15:16:51

赚小钱 发表于 2020-5-29 12:00
你都想到了一元二次方程,用韦达定理它不香吗。

我是不懂这个题目与一元二次方程有什么联系,能详细说说吗。

赚小钱 发表于 2020-5-29 15:31:27

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) 的关系

找一下初中课本

jack陈ZJ 发表于 2020-5-29 22:45:33

赚小钱 发表于 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")

赚小钱 发表于 2020-5-29 22:50:54

jack陈ZJ 发表于 2020-5-29 22:45
懂了,你看我代码写的对不对。
int n,m;
scanf("%d %d",&n,&m);


good job.
格式再好一些,就完美了。
页: [1]
查看完整版本: 急,求大佬看看。