wangheng 发表于 2017-10-9 21:03:31

一个关于数学的算法

对于(x-1)*(x-2)........许多这种式子相乘怎么用C++语言表示??
例如(x-1)*(x-2)使其输出的是x^2-3*x+2。
有没有办法??

求道于盲 发表于 2017-10-9 22:29:18

自己拼接

lizechen 发表于 2017-10-9 23:47:21

请问楼主求的表示是什么意思呢?是要按照后者的算法进行求解吗?虽然从值的角度两者是一样的,但是前者两次减法一次乘法,后者是两次乘法,一次减法,一次加法,前者的执行更有效率。至于表示的话就看楼主自己心意了。

wangheng 发表于 2017-10-10 09:21:54

lizechen 发表于 2017-10-9 23:47
请问楼主求的表示是什么意思呢?是要按照后者的算法进行求解吗?虽然从值的角度两者是一样的,但是前者两次 ...

就是求多项式乘法,在不确定其项数的情况下,求(x-c)的多个式子相乘,然后的到各项的系数及相应的指数

lizechen 发表于 2017-10-10 11:16:00

wangheng 发表于 2017-10-10 09:21
就是求多项式乘法,在不确定其项数的情况下,求(x-c)的多个式子相乘,然后的到各项的系数及相应的指数

你是说n个(x-c)的展开式的每项系数怎么求是吗?

wangheng 发表于 2017-10-10 15:11:35

lizechen 发表于 2017-10-10 11:16
你是说n个(x-c)的展开式的每项系数怎么求是吗?

对,就是这个意思

lizechen 发表于 2017-10-10 20:02:05

wangheng 发表于 2017-10-10 15:11
对,就是这个意思

这个其实实现不难,主要是算法,二项式展开式的公式你要知道,然后系数的求法你要知道,之后用C语言实现就可以了,下面是程序代码:

//求二项式展开式的系数
//公式:C(n,r)* C^r
#include<stdio.h>
#include<math.h>
int zuhe(int n, int r);
int jiecheng(int integer);
int main()
{
    int c, n, r = 0;//c:常数,可根据需要改成对应的数据类型,n为指数,r为所求项索引
    int xishu;//x系数
    printf("求(x + c)的n次方的展开式的系数!\n请输入c和n的值(此处应用空格隔开):\n");
    scanf("%d %d", &c, &n);
    for(r = 0; r < (n + 1); r++)
    {   
      xishu = zuhe(n, r) * pow(c, r);
      printf("%d ", xishu);
    }
    printf("\n");
    return 0;
}

int zuhe(int n, int r)//求系数中C(n, r)的值,即组合
{
    int zh;
    zh = (jiecheng(n) / jiecheng(n-r))/ (jiecheng(r));
    return zh;
}

int jiecheng(int integer) //求阶乘的函数
{
    int i = 1;
    int jc= 1;
    while (i <= integer)
    {
         jc = jc * i;
         i++;   
    }
    return jc;
}

lizechen 发表于 2017-10-10 20:40:04

wangheng 发表于 2017-10-10 15:11
对,就是这个意思

记得设为最佳答案哦~~~
页: [1]
查看完整版本: 一个关于数学的算法