PAT乙级 1010 一元多项式求导 错误分析

    科技2023-10-07  76

    PAT乙级 1010 一元多项式求导 错误分析

    题目 1010 一元多项式求导 设计函数求一元多项式的导数。(注:注:xn(n为整数)的一阶导数为nxn−1​​ 。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

    输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。

    输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 分析 题目中的坑是如果第一项指数是0,则直接输出0 0 而指数0是在中间出现的话,则不输出这一项 如果注意到直接输出0 0的话,一般不会出错。 我错的地方是没有考虑到指数0出现在最后一位,最后一项不用输出。残留了上一项输出的空格。 因为开始我的判断方式是根据是否在输出最后一项,不在就在最后一项加空格。所以错误。 后面参考了https://blog.csdn.net/weixin_44485744/article/details/92392388?的方式通过了。

    #include<iostream> #include<vector> using namespace std; int main() { vector<int>A; int i; cin >> i; A.push_back(i); while (cin.get() != '\n') //输入数组中 { cin >> i; A.push_back(i); } if(A[1]==0) {cout<<0<<" "<<0;return 0;} cout<<A[0]*A[1]<<" "<<A[1]-1;//先输出第一项 for(i=2;i<A.size();i=i+2) { if(A[i+1]!=0) cout<<" "<<A[i]*A[i+1]<<" "<<A[i+1]-1; } return 0; }
    Processed: 0.013, SQL: 8