PAT:1010一元多项式求导 (25 )

PAT乙级的题目相对于甲级的题目较为简单,但是有时候也会有一两道题很奇怪,具有一定的逻辑难度,这道题就是一个例子。

先看一下题目:

010 一元多项式求导 (25 分)
设计函数求一元多项式的导数。(注:x
?n
??(n为整数)的一阶导数为nx
?n?1
??。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。

样例就不放了。简单的来说这是一个求导的问题,但是这不完全是一个求导的问题。

因为题目定义了一个叫做0 0的东西,查看数学定义可知道,0的0次方是不被定义的,但是在题目里,0 0表示零多项式,意思就是假如求导后的结果为0.就必须要输出0 0。反之,如果有其它的非零项的存在它就不会输出,因此在只输入一项的情况下,应当判断是不是0 0,然后输出,0 0的情况有两种,一种是输入本身就是0 0,另一种是求导后为0 0.

其他情况的普通数字,只要判断系数项是不是0,就可以判断是否输出了。

同样求导的过程也会被改变,因为任意系数的0次方都是0,所以此时求导,指数是不可以减去1的,这会造成输出错误。

#include <iostream>
#include <algorithm>
using namespace std;

int main(int argc, char** argv) {

	char c;
	int mn[1000];

	cin>>mn[0]>>mn[1];
	if (mn[0]==0&&mn[1]==0)
	{
		cout<<‘0‘<<‘ ‘<<‘0‘;
		return 0;
	}

	int n=2;
	while(getchar()!=‘\n‘)
	{
		cin>>mn[n];
		n++;
	//	cout<<mn[n]<<endl;
	}

//	cout<<n;

	for (int i=0;i<n;i=i+2)
	{
		if(mn[i+1]==0)
	   	mn[i]=0;

		else
		 {
		 	mn[i]*=mn[i+1];
	        mn[i+1]--;                              //求导算法处理
		 }

	}                           

	int ff=0;
	for (int i=0;i<n;i=i+2)
	{
		if (ff==0)                                  //第一项输出
		{
			if(mn[i]!=0)                            //系数不为0,则必然输出
			{
			   cout<<mn[i]<<‘ ‘<<mn[i+1];
			   ff=1;
			}

		    if(mn[i]==0&&mn[i+1]==0&&n==2)          //只有一项,且为0 0,则输出
		    {
		       cout<<mn[i]<<‘ ‘<<mn[i+1];
			   ff=1;
			}

		}
		else                                        //非第一项输出
		{
			if(mn[i]!=0)                            //系数不为0,则必然输出
			cout<<‘ ‘<<mn[i]<<‘ ‘<<mn[i+1];
		}

	}

//	cout<<n;
	return 0;
}

  

原文地址:https://www.cnblogs.com/Linda-Blog/p/10424873.html

时间: 2024-10-10 06:31:43

PAT:1010一元多项式求导 (25 )的相关文章

PAT 1010. 一元多项式求导 (25)

设计函数求一元多项式的导数. 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.注意"零多项式"的指数和系数都是0,但是表示为"0 0". 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 思路:一次输入两个数a,b按Ctrl+z结束输入.保存在s[b]中,且令s[b]

PAT 乙级 1010 一元多项式求导 (25) C++版

1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.注意"零多项式"的指数和系数都是0,但是表示为"

PAT 1010. 一元多项式求导

1010. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.注意"零多项式"的指数和系数都是0,但是表示为"0 0". 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6

PAT:1010. 一元多项式求导 (25) 全错

#include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; int main() { int arr[1111]; fill(arr,arr+1111,0); int n=0,tmp; while(scanf("%d",&tmp)!=EOF) //存储系数和指数,下标从0开始偶数为系数,奇数为指数 arr[n++]=tmp; for(int i=0

PAT:1010. 一元多项式求导 (25) AC

#include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; int main() { int arr[2111]; fill(arr,arr+2111,0); int n=0,tmp; while(scanf("%d",&tmp)!=EOF) //存储系数和指数,下标从0开始偶数为系数,奇数为指数 arr[n++]=tmp; for(int i=0

1010 一元多项式求导 (25分)

#include<iostream> using namespace std; int main() { int index; int expo; cin>>expo>>index; if(index==0){ cout << "0 0"; return 0; } else cout << index*expo <<" "<<index-1; while(cin>>exp

1010. 一元多项式求导 (25)

设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.注意“零多项式”的指数和系数都是0,但是表示为“0 0”. 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 1 #include <stdio.h> 2 #includ

1010. 一元多项式求导 (25) (ZJUPAT 数学求导)

题目链接:http://pat.zju.edu.cn/contests/80/1010 设计函数求一元多项式的导数. 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格. 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 代码如下: #include <cstdio> #include <cma

PAT——1010. 一元多项式求导

设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.注意"零多项式"的指数和系数都是0,但是表示为"0 0". 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 1 package com.ho

1010. 一元多项式求导

1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数. 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格.注意“零多项式”的指数和系数都是0,但是表示为“0 0”. 输入样例: 3 4 -5 2 6 1 -2 0 输出样例