1010 一元多项式求导 (25分)
设计函数求一元多项式的导数。(注:x
n
(n为整数)的一阶导数为nx
n−1
。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
题目分析:
1.第一项是 输入的 乘积,第二项是 输入的第二个数-1;
2.第一项为 0 0时要输出0 0;
代码:
#include<stdio.h>
//MrHaddis
int main() {
//定义x 和n;
//定义index
//这里我原本是想用 getchar来实现,但是题目没有给出输入最长大小,
//数组就没法设定大小,就比较麻烦了。
//所以用scanf获取输入
int x = 0, n = 0, index = 0;
while (scanf("%d %d", &x, &n)) {
if (n == 0) {
//如果第一项为0多项 则要输出0 0
if (index == 0) {
printf("0 0");
}
return 0;
} else if (n != 0) {
if (index == 0) {
printf("%d %d", x * n, n - 1);
} else {
printf(" %d %d", x * n, n - 1);
}
}
//循环一次就可以不用管index的值了
if (index == 0) {
index = 1;
}
//为了避免运行超时 每次循环完时 给x n重新赋值
x = n = 0;
}
return 0;
}