【C】一元多項式導出
2869 ワード
設計関数は1元多項式の導関数を求める.(注:xn(nは整数)の1次導関数はn*xn-1です.)
入力フォーマット:多項式のゼロ以外の係数と指数(絶対値はいずれも1000を超えない整数)を指数降格で入力します.数値間はスペースで区切られます.
出力フォーマット:入力と同じフォーマットで導関数多項式非ゼロ項の係数と指数を出力します.数字間はスペースで区切られていますが、末尾に余分なスペースはありません.注意「ゼロ多項式」の指数と係数はいずれも0ですが、「0 0」と表示されます.
サンプルを入力:
出力サンプル:
注:タイトルには罠があります:ゼロ以外の項目は出力できません.最後に0 0を出力します.以上の方法は簡単ですが、多くの細部は無視しやすいです.もし機械試験がこのレベルであれば..以下はscanf("%d%d",&k,&e)!=EOFメソッドは、あなたのデータを入力した後、Ctrl+Zを使用して、それからEnterを使用して、あなたの答えを出力する必要があります.
入力フォーマット:多項式のゼロ以外の係数と指数(絶対値はいずれも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;
}