1010 一元多项式求导 ——C/C++实现

版权声明:本文为博主原创文章,转载请务必注明出处和作者,谢谢合作! https://blog.csdn.net/zhanshen112/article/details/84324297

题目

1010 一元多项式求导 (25 point(s))

设计函数求一元多项式的导数。(注:x​n​​(n为整数)的一阶导数为nx​n−1​​。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

算法

注意“零多项式”的指数和系数都是 0,但是表示为 0 0。这句话要理解好,题目的意思是如果单独输入8 0这样的数字,要输出0 0 表示……理工科的表达总不是容易让人理解,出卷老师也是这样……

至于实现,每次读入两个数字就好。由于输入式是指数和系数。因此,每读两个会很方便。

代码

代码1、C++实现

#include <iostream>
using namespace std;

int main(){
	long int a,b,flag=0;
	do{
		cin>>a>>b;
		if(b!=0){	
			if(flag==1) cout<<" ";	//保证第一个数字之后才在数字之前输出空格 
			cout<<a*b<<" "<<b-1;
			flag=1;
		}	
	}while(getchar()!='\n');
	if(flag==0)	cout<<"0 0";
	return 0;
} 

代码2、C实现

//PAT1010V1
#include <stdio.h> 

int main(){
	int a,b;
	int flag=0;
	while(scanf("%d %d",&a,&b)!=EOF){
		if(b!=0){
			if(flag==0)	printf("%d",a*b);
			else printf(" %d",a*b);
			printf(" %d",b-1);
			flag=1;
		}
	}
	if(flag==0)	printf("0 0");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zhanshen112/article/details/84324297
今日推荐