PAT-1010 一元多项式求导

PAT-1010 一元多项式求导

题目:
在这里插入图片描述

代码:

#include <iostream>
using namespace std;

int main(){
	string s;
	getline(cin,s);
	int A[s.size()-1];
	int tn=0,k=0,flag=0,flag1=0; //flag记录是否有负号,0没有,1有 ,flag1用来判断是否中间有多个空格 
	for(int i=0;i<s.size();i++){
		if(s[i]==' '){
			if(flag1==0){
				if(flag==1){
					A[k]=-tn;
				}else{
					A[k]=tn;
				}
				k++;
				tn=0;
				flag=0;
			}
			flag1=1;
		}else if('0'<=s[i]&&s[i]<='9'){
			tn=tn*10+s[i]-'0';
			flag1=0;
		}else if(s[i]=='-'){
			flag=1;
			flag1=0;
		}else if(s[i]=='\n'){
			break;
		}
	}
	A[k]=tn;k++;
	if(A[1]==0){
		cout<<0<<" "<<0;
		return 0;
	}
	for(int i=0;i<k-1;i=i+2){
		A[i]=A[i]*A[i+1];
		A[i+1]--;
	}
	for(int i=0;i<k-1;i=i+2){
		if(A[i]==0&&A[i+1]==-1){
			break;
		}else if(i+2<k&&A[i+2]==0&&i+3<k&&A[i+3]==-1){
			cout<<A[i]<<" "<<A[i+1];
		}else{
			cout<<A[i]<<" "<<A[i+1]<<" ";
		}	
	}
	return 0;
}

版权声明:本文为qq_42250642原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。