【C】一元多項式導出

2869 ワード

設計関数は1元多項式の導関数を求める.(注:xn(nは整数)の1次導関数はn*xn-1です.)
入力フォーマット:多項式のゼロ以外の係数と指数(絶対値はいずれも1000を超えない整数)を指数降格で入力します.数値間はスペースで区切られます.
出力フォーマット:入力と同じフォーマットで導関数多項式非ゼロ項の係数と指数を出力します.数字間はスペースで区切られていますが、末尾に余分なスペースはありません.注意「ゼロ多項式」の指数と係数はいずれも0ですが、「0 0」と表示されます.
サンプルを入力:
3 4 -5 2 6 1 -2 0

出力サンプル:
12 3 -10 1 6 0
/*             。( :xn(n   )      n*xn-1。)*/
#include
int main(){
	//int xi[2001]={0},zhi[2001]={0};
	char buf[4002];
	int buff[4002]={0};
	int len=0,i,j=0;
	while(buf[len]=getchar()){
		if(buf[len]=='
') break; len++; } for(i=0;i=len) buff[j]=(int)(buf[i]-'0'); else if(buf[i+2]==' '||i+2==len){ buff[j]=(int)(buf[i]-'0')*10+(int)(buf[i+1]-'0'); i=i+2; } else if(buf[i+3]==' '||i+3==len){ buff[j]=(int)(buf[i]-'0')*100+(int)(buf[i+1]-'0')*10+(int)(buf[i+2]-'0'); i=i+3; } else if(buf[i+4]==' '||i+4==len){ buff[j]=(int)(buf[i]-'0')*1000+(int)(buf[i+1]-'0')*100+(int)(buf[i+2]-'0')*10+(int)(buf[i+3]-'0'); i=i+4; } //printf("j=%d %d ",j,buff[j]); j++; } else if(buf[i]=='-'){ if(buf[i+2]==' '||i+2>=len){ buff[j]=(int)(buf[i+1]-'0')*(-1); i=i+2; } else if(buf[i+3]==' '||i+3>=len){ buff[j]=(int)(buf[i+1]-'0')*(-10)+(int)(buf[i+2]-'0')*(-1); i=i+3; } else if(buf[i+4]==' '||i+4>=len){ buff[j]=(int)(buf[i+1]-'0')*(-100)+(int)(buf[i+2]-'0')*(-10)+(int)(buf[i+3]-'0')*(-1); i=i+4; } else if(buf[i+5]==' '||i+5>=len){ buff[j]=(int)(buf[i+1]-'0')*(-1000)+(int)(buf[i+2]-'0')*(-100)+(int)(buf[i+3]-'0')*(-10)+(int)(buf[i+4]-'0')*(-1); i=i+5; } //printf("j=%d %d ",j,buff[j]); j++; } } int num=j,flag=1,shu=1; //printf("num=%d
",num); for(j=0;j

注:タイトルには罠があります:ゼロ以外の項目は出力できません.最後に0 0を出力します.以上の方法は簡単ですが、多くの細部は無視しやすいです.もし機械試験がこのレベルであれば..以下はscanf("%d%d",&k,&e)!=EOFメソッドは、あなたのデータを入力した後、Ctrl+Zを使用して、それからEnterを使用して、あなたの答えを出力する必要があります.
/*             。( :xn(n   )      n*xn-1。)*/
#include
int main(){
	int a[2001]={0};
	int k,e;
	int flag1=1,flag2=1;//              ,        
	int i,j=0;
	while(scanf("%d %d",&k,&e)!=EOF){
		a[e+1000]=k;//    :[-1000,1000],   e,   k
	}
	for(i=2000;i>=0;i--){
		a[i]=a[i]*(i-1000);
		if(a[i]!=0){
			if(flag1==1){
				printf("%d %d",a[i],i-1001);
				flag1=0;flag2=0;
			}
			else printf(" %d %d",a[i],i-1001);
		}
	}
	if(flag2==1) printf("0 0");
	return 0;
}