鱼C论坛

 找回密码
 立即注册
查看: 1966|回复: 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语言实现就可以了,下面是程序代码:

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

  21. int zuhe(int n, int r)//求系数中C(n, r)的值,即组合
  22. {
  23.     int zh;
  24.     zh = (jiecheng(n) / jiecheng(n-r))  / (jiecheng(r));
  25.     return zh;
  26. }

  27. int jiecheng(int integer) //求阶乘的函数
  28. {
  29.     int i = 1;
  30.     int jc= 1;
  31.     while (i <= integer)
  32.     {
  33.          jc = jc * i;
  34.          i++;   
  35.     }
  36.     return jc;
  37. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-9 22:29:18 | 显示全部楼层
自己拼接
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

就是求多项式乘法,在不确定其项数的情况下,求(x-c)的多个式子相乘,然后的到各项的系数及相应的指数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你是说n个(x-c)的展开式的每项系数怎么求是吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

对,就是这个意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 20:02:05 | 显示全部楼层    本楼为最佳答案   
wangheng 发表于 2017-10-10 15:11
对,就是这个意思

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

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

  21. int zuhe(int n, int r)//求系数中C(n, r)的值,即组合
  22. {
  23.     int zh;
  24.     zh = (jiecheng(n) / jiecheng(n-r))  / (jiecheng(r));
  25.     return zh;
  26. }

  27. int jiecheng(int integer) //求阶乘的函数
  28. {
  29.     int i = 1;
  30.     int jc= 1;
  31.     while (i <= integer)
  32.     {
  33.          jc = jc * i;
  34.          i++;   
  35.     }
  36.     return jc;
  37. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

记得设为最佳答案哦~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-30 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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