標籤:輸入格式 return 第一個 break 內容 stdio.h mit 需要 can
題目內容:
一個多項式可以表達為x的各次冪與係數乘積的和,比如:
2x6+3x5+12x3+6x+20
現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。
程式要處理的冪最大為100。
輸入格式:
總共要輸入兩個多項式,每個多項式的輸入格式如下:
每行輸入兩個數字,第一個表示冪次,第二個表示該冪次的係數,所有的係數都是整數。第一行一定是最高冪,最後一行一定是0次冪。
注意第一行和最後一行之間不一定按照冪次降低順序排列;如果某個冪次的係數為0,就不出現在輸入資料中了;0次冪的係數為0時還是會出現在輸入資料中。
輸出格式:
從最高冪開始依次降到0冪,如:
2x6+3x5+12x3-6x+20
注意其中的x是小寫字母x,而且所有的符號之間都沒有空格,如果某個冪的係數為0則不需要有那項。
輸入範例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
輸出範例:
4x6+6x5+12x3+12x2+12x+40
時間限制:500ms 記憶體限制:32000kb
#include <stdio.h>int a[105],b[105];int main(){ int x,y;
while (~scanf("%d%d",&x,&y)){ a[x]=y; if (x==0) break; } while (~scanf("%d%d",&x,&y)){ b[x]=y; if (x==0) break; }
for (int i=0;i<=100;i++) a[i]=a[i]+b[i];
int flag=0;
for (int i=100;i>1;i--){ if (a[i]){ if (a[i]>0){ if (a[i]==1){ if (flag==0){ printf("x%d",i); flag=1; } else printf("+x%d",i); } else{ if (flag==0){ printf("%dx%d",a[i],i); flag=1; } else printf("+%dx%d",a[i],i); } } else{ if (a[i]==-1) printf("-x%d",i); else printf("%dx%d",a[i],i); } } }
if (a[1]){ if (a[1]>0){ if (a[1]==1){ if (flag==0){ printf("x"); flag=1; } else printf("+x"); } else{ if (flag==0){ printf("%dx",a[1]); flag=1; } else printf("+%dx",a[1]); } } else{ if (a[1]==-1) printf("-x"); else printf("%dx",a[1]); } }
if (a[0]>0){ if (flag==0){ printf("%d",a[0]); flag=1; } else printf("+%d",a[0]); } if (a[0]<=0){ printf("%d",a[0]); }
printf("\n"); return 0;}
多項式加法 翁愷老師C語言程式設計CAP第7章編程題