描述
计算多项式的导函数是一件非常容易的任务。给定一个函数f(x),我们用f’(x)来表示其导函数。我们用x^n来表示x的n次幂。为了计算多项式的导函数,你必须知道三条规则:
(1)、(C)’ = 0 如果C是常量
(2)、(C*x^n)’ = C*n*x^(n-1) 如果n >= 1且C是常量
(3)、(f1(x)+f2(2))’ = f1’(x)+f2’(x)
容易证明,多项式的导函数也是多项式。
现在,请你编写一个程序,给定一个不包含负系数且已合并好同幂次项的多项式f(x),计算出它的导函数。
输入
输入有两行。
第一行是一个整数n(0 <= n <= 100)表明多项式的最高次幂为n。
第二行包含n+1个非负整数,Cn ,Cn-1 ,Cn-2 ,Cn-3 ,Cn-4 ,… ,C1,C0(0 <= Ci <= 1000)且Cn != 0。Ci是幂次为i的项的系数。
输出
在一行内输出f’(x)的结果。
(1) 如果g(x) = 0那么直接输出0
(2) 如果g(x)形如Cm(x^m)+Cm-1(x^(m-1))+…+C0(Cm!=0)那么输出Cm…C0
(3) 相邻整数之间有单个空格。
样例输入
3
0
10
2
3 2 1
3
10 0 1 2
样例输出
0
6 2
30 0 1
首先解释一下,本题样例输入输出有误,样例中的意思是第一行输入有几组数据,然后在按照题目中所说的输入,但实际测试数据中是按照题目描述设计的,即
输入 输出
测试点1:
0
10 ====> 0
测试点2:
2
3 2 1 ====> 6 2
测试点3:
3
10 0 1 2 ====> 30 0 1
然后这道题虽然是如此高大上的导数背景,但看输出格式只输出多项式的系数就是c*n(n从初始值依次递减至1).
以测试数据2为例:输入2,有n+1项,输入3 2 1,即求(3x³+2x²+1)的导数,
0.n若为0,根据规则1,直接输出0
1.根据规则3(f1(x)+f2(x))’ = f1’(x)+f2’(x),所以原式的导数=3x²的导数+2x²的导数+1的导数
2.根据规则1和2:所以1中的式子=3*2*x的1次方+2*1*x的0次方+0
3.观察样例可以得到,最后一个0不输出,所以输出的数就是输入的每个c依次乘n(n每次减1)
1 #include<cstdio>
2 using namespace std;
3 int n,c;
4 int main()
5 {
6 scanf("%d",&n);
7 if(!n)
8 {
9 printf("0");
10 return 0;
11 }
12 for(int i=n;i>0;i--)
13 {
14 scanf("%d",&c);
15 printf("%d ",c*i);
16 }
17 }