pta乙级1010求导数求解

pta 1010 搞不懂为啥过不了 望各位帮忙解答
很多例子都试过了 和答案的一样
谢谢啦

img


#include <stdio.h>
struct X {
    int a, b;
}x[1000];
int main() {
    int a, b, cnt = 0;
    
    while(scanf("%d%d", &a, &b) == 2) {
        x[cnt].a = a, x[cnt].b = b;
        cnt ++;
    }
    if(x[0].a == 0 || x[0].b == 0)
       printf("%d %d",0,0);
    else
       printf("%d %d",x[0].a * x[0].b, x[0].b - 1);
          
    for(int i = 1;i < cnt;i ++){ 
        if(x[i].a == 0 || x[i].b == 0)
            continue;
        else
           printf(" %d %d",x[i].a * x[i].b, x[i].b - 1);
    } 

    return 0;
}

[参考:https://blog.csdn.net/nyquist_mikkan/article/details/114364003]
审题
以指数递降方式输入多项式非零项系数和指数,也就是说越靠前的指数越低,如果是零多项式,那么第一组参数就能知道是了;
输入用例是两个数绑定在一起的,可以使用结构体来接收
零多项式输出0 0,但正常多项式里常数项的导数不输出。
代码

#include <iostream>
#include <vector>
using namespace std;

typedef struct{
    int a;
    int n;
}param;

vector<param*> params;
void logic();

int main(){
    int input_a;
    int input_n;
    while(cin.peek() != '\n'){
        cin >> input_a >> input_n;
        //每次都要重新申请内存,不然存进去的内容都一样
        param* input_param = new param;
        input_param->a = input_a;
        input_param->n = input_n;
        params.push_back(input_param);
    }
    
    logic();
    
    //零多项式要单独作为条件
    if(params[0]->a == 0){
        cout << 0 << " " << 0;
        return 0;
    }
    
    bool first = true;
    for(param* single : params){
        //常数项的导数不输出
        if(single->a != 0){
            if(first){
                first = false;
                cout << single->a << " " << single->n;
            }else{
                cout << " " << single->a << " " << single->n;
            }
        }
    }
    
    return 0;
}

void logic(){
    for(param* single : params){
        single->a *= single->n;
        single->n -= 1;
    }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^