PAT 02-2. 一元多项式求导 (25)
来源:互联网 发布:ppt怎么做数据图 编辑:程序博客网 时间:2024/06/05 09:45
02-2. 一元多项式求导 (25)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
设计函数求一元多项式的导数。
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入样例:3 4 -5 2 6 1 -2 0输出样例:
12 3 -10 1 6 0
这个问题解起来本身并不难,但是有一个地方要注意,那就是当输入只有常数项时,例如4 0;此时输出应为0 0。下面这个程序是我写的,使用C语言,链表存储数据。(虽然既麻烦又啰嗦,但是成功通过了,我还是挺高兴的,后面的程序很简洁,使用的是数组存储的方式,来自于网络)
方法一:C语言+链表 来自网络,出处:点击链接
/** * C语言--链表实现:一元多项式的导数* 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 * 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。* 输入样例:3 4 -5 2 6 1 -2 0 输出样例:12 3 -10 1 6 0 */#include <stdio.h>#include <stdlib.h>#define MAX 1000typedef struct Polynomial{int data[MAX + 1];int highPower;}*Poly;void ZeroPoly(Poly poly) {//将所有系数置0 for(int i = 0; i < MAX; i++)poly->data[i] = 0;poly->highPower = 0;}void InitPoly(Poly poly) {//根据输入格式设计的初始化多项式函数int coef, exp;scanf("%d%d", &coef, &exp);poly->data[exp] = coef;poly->highPower = exp;while(scanf("%d%d", &coef, &exp) != EOF){poly->data[exp] = coef;}}void DerivPoly(Poly poly, Poly retPoly) {//求导 if(poly->highPower)retPoly->highPower = poly->highPower - 1;for(int i = 1; i <= poly->highPower; i++)if(poly->data[i]) {retPoly->data[i - 1] = i * poly->data[i];}}void Print(Poly poly) {if(poly->highPower == 0 && poly->data[0] == 0)printf("0 0");for(int i = poly->highPower; i >= 0; i--) {if(poly->data[i]) {if(i != poly->highPower)printf(" ");printf("%d %d", poly->data[i], i);}}}int main() {Poly poly = (Poly)malloc(sizeof(struct Polynomial));ZeroPoly(poly);InitPoly(poly);//读入数据Poly retPoly = (Poly)malloc(sizeof(struct Polynomial));ZeroPoly(retPoly);DerivPoly(poly, retPoly);//求导Print(retPoly);//输出结果free(poly);free(retPoly);return 0;}
方法二:C语言+数组:来自于网络,出处:点击打开链接
#include <stdio.h>int getnum(int a[],int b[]);void putnum(int a[],int b[],int n);int main(){int degree,co[20],index[20],result_co[20],result_index[20];int i;for(i=0;i<20;i++)co[i]=index[i]=result_index[i]=result_co[i]=0;degree=getnum(co,index);if(degree>1)for(i=0;i<degree;i++){result_co[i]=co[i]*index[i];result_index[i]=index[i]-1;}elseresult_co[0]=result_index[0]=0;putnum(result_co,result_index,degree);return 0;}int getnum(int a[],int b[]){int i;i=0; do{scanf("%d%d",&a[i],&b[i]);i++;}while(b[i-1]!=0);return i;}void putnum(int a[],int b[],int n){int i;if(n>1){n=n-1; for(i=0;i<n-1;i++)printf("%d %d ",a[i],b[i]);printf("%d %d",a[n-1],b[n-1]);}elseprintf("%d %d",a[0],b[0]);}
0 0
- PAT 02-2. 一元多项式求导 (25)
- PAT 02-2. 一元多项式求导 (25)
- PAT 02-2. 一元多项式求导 (25)
- PAT 数据结构 02-线性结构2. 一元多项式求导 (25)
- PAT:一元多项式求导
- PAT一元多项式求导
- 【初学】02-2. 一元多项式求导 (25)
- PAT 1010. 一元多项式求导 (25)
- PAT - 1010. 一元多项式求导 (25)
- PAT Basic 1010. 一元多项式求导 (25)
- PAT 1010. 一元多项式求导 (25)
- PAT(B)1010. 一元多项式求导 (25)
- Java - PAT - 1010. 一元多项式求导 (25)
- Java - PAT - 1010. 一元多项式求导 (25)
- PAT-乙级-1010. 一元多项式求导 (25)
- PAT乙级.1010. 一元多项式求导 (25)
- PAT(B) - 1010. 一元多项式求导 (25)
- PAT乙1010. 一元多项式求导 (25)
- 分页
- 猜猜哪个明星也在把玩爱克E-Light智能情景灯?就是这么炫、这么任性
- leveldb学习一(资源篇)
- linux 3.6.4上遇到的console打印问题小记
- 又见回文(指针的做法)
- PAT 02-2. 一元多项式求导 (25)
- 利用UIButton背景图片的变化,实现点赞等功能
- hdu5123水题
- makePersormSelector
- jquery mobile开发中页面跳转后js不执行的问题
- JasperReport简介
- 设备控制器
- Redis学习3--列表键List
- VS2012启用angularjs智能提示Intelligence