鱼C论坛

 找回密码
 立即注册
查看: 1742|回复: 7

[已解决]一个关于数学的算法

[复制链接]
发表于 2017-10-9 21:03:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对于(x-1)*(x-2)........许多这种式子相乘怎么用C++语言表示??
例如(x-1)*(x-2)使其输出的是x^2-3*x+2。
有没有办法??
最佳答案
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-9 22:29:18 | 显示全部楼层
自己拼接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-9 23:47:21 From FishC Mobile | 显示全部楼层
请问楼主求的表示是什么意思呢?是要按照后者的算法进行求解吗?虽然从值的角度两者是一样的,但是前者两次减法一次乘法,后者是两次乘法,一次减法,一次加法,前者的执行更有效率。至于表示的话就看楼主自己心意了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是求多项式乘法,在不确定其项数的情况下,求(x-c)的多个式子相乘,然后的到各项的系数及相应的指数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你是说n个(x-c)的展开式的每项系数怎么求是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 15:11:35 | 显示全部楼层
lizechen 发表于 2017-10-10 11:16
你是说n个(x-c)的展开式的每项系数怎么求是吗?

对,就是这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 20:40:04 | 显示全部楼层
wangheng 发表于 2017-10-10 15:11
对,就是这个意思

记得设为最佳答案哦~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-30 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表