PAT乙级B1010一元多项式求导问题有点小bug

题目:
设计函数求一元多项式的导数。(注:x
​n
​​ (n为整数)的一阶导数为nx
​n−1
​​ 。)

输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

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

输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0

本人代码:
#include
using namespace std;

class Number
{
public:
int _front;
int _finger;
void NumChange()
{
_front *= _finger;
if(_finger) _finger–;
}
};

int main()
{

class Number num[1050];
int cnt=0;
do
{
    cin >> num[cnt]._front >> num[cnt]._finger;
    cnt++;
}while(cin.get()!='\n');

for(int i=0;i<cnt;i++)
    num[i].NumChange();

if(cnt == 1 && num[cnt-1]._front ==0 && num[cnt-1]._finger ==0)
    cout <<"0 0";						//这一个判断存在一点问题
else
{
    for(int i=0;i<cnt;i++)
    {
        if(num[i]._front!=0 || num[i]._finger!=0)
            cout<< num[i]._front<<" " << num[i]._finger;
        if(num[cnt-1]._front==0)
        {
            if(i <cnt-2)
                cout <<" ";
        }
        if(num[cnt-1]._front!=0)
        {
            if(i <cnt -1)
                cout <<" ";
        }
    }   
}
return 0;

}

tips:见代码区中注释处,再经过几次测试后,我发现pat的oj好像没有添加只有常数项这一种判定。因为本人第一次写判定的时候是cnt == 1 && num[cnt]._front ==0 && num[cnt]._finger ==0 这种形式,很明显这个cnt这块出了问题,cnt是输入类数组的长度,而数组最后一个元素在数组中的下标是cnt-1。但是奇怪的是我第一次提交的代码居然全部ac了,我也是自己在vs中调试了一阵才发现不对劲,而且改了代码之后pat同样ac,我猜测是测试数据里面没有只含有常数项的多项式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虐鼠无情麻子刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值