模擬--洛谷P1067
阿新 • • 發佈:2018-12-01
題目連結 點我傳送
思路:
這是一道水題,簡單的模擬,也沒啥坑,主要是細心。
由於需要遵循多項式的法則,呢麼就有幾種特殊情況需要注意。
讀題可知 多項式的次數是已經確定的 依次是 n n-1 n-2 n-3 .......1 0
1、多項式的首項的係數如果是正數 不用輸出+號
2、x的1次方 不能列印 x^1 而是直接列印x
3、x的係數為1 或者-1 的時候 1 省略不寫
4、第n+1位 如果係數為1 按理應該省略不寫 但同時指數為0 所以係數的1 不能省略
樣例 3(n) 0 1 2 1 答案如下
程式碼:
#include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; const int maxn=1e5+7; typedef struct node{ int x,y; }node; node a[maxn]; int n,xx,yy; int main(){ scanf("%d",&n); for(int i=1;i<=n+1;i++){ scanf("%d",&a[i].x); a[i].y=n-i+1; } int flag=0; for(int i=1;i<=n+1;i++){ if(a[i].x==0)continue; if(a[i].x>0){ if(flag!=0)//第一項不用輸+ printf("+"); } if(a[i].x<0){ printf("-"); } if(a[i].x<0)a[i].x=-a[i].x; if(a[i].x!=1){//係數不為1 列印係數 printf("%d",a[i].x); } else{//係數為1 只有指數為0的情況下才寫係數 if(a[i].y==0)printf("1"); } if(a[i].y!=0){//指數不為0 處理指數 if(a[i].y==1)printf("x");//指數為1 省略不寫 else printf("x^%d",a[i].y);//不為1 列印指數部分 } flag=1;//一但有了輸出就不是第一項了 } return 0; }