1. 程式人生 > >1010 一元多項式求導 (25)(25 分)小心坑點!!

1010 一元多項式求導 (25)(25 分)小心坑點!!

題目我就不放了,相信大家都知道了。這道題有幾個隱藏的坑的點。

1、輸入問題,該題的輸入並非是按回車後資料輸入完畢也不是給定資料長度,而是輸入到檔案末尾。有種解決方式是用while(!=EOF)。EOF代表的是檔案結束符。那麼我們寫這道題還要從檔案進行輸入嗎?其實不用的,我們在本地上寫完程式碼自己測試時,如果是Linux系統,按ctrl+D,windows系統下先按一個回車,在按ctrl+z,最後在按一個回車就好了。

2、輸出的格式,相信已經不陌生了,這裡就不再多說。

3、這個坑了我好久啊,具體是“導數多項式非零項的係數和指數”,也就是說,如果輸入項的指數是0,那麼該項不輸出,直接pass;如果輸入的是 0 0 ,那麼直接輸出0 0 .

被坑了好幾次後終於通過的程式碼。由於個人正在學結構體,所以用結構體解了這道題。

#include <bits/stdc++.h>
#include <cstdio>
#include <stdlib.h>
using namespace std;
const int maxn = 1e5+10;
struct node
{
    int xishu;
    int exp;
} nn[maxn];
int main()
{
    char ch[maxn];
    int n,m,cnt = 0;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        nn[cnt].xishu = n;
        nn[cnt].exp = m;
        cnt++;
    }
    if(cnt == 1 && nn[0].exp==0 )
    {
        cout<<"0 0"<<endl;
        return 0;
    }
    cout<<nn[0].exp*nn[0].xishu<<" "<<nn[0].exp-1;
    for(int i=1; i<cnt; i++)
    {
        if(nn[i].exp!=0)
        {
            cout<<" "<<nn[i].exp*nn[i].xishu<<" "<<nn[i].exp-1;
        }
    }
    return 0;
}