PAT乙级1010——一元多项式求导

题目:

题目详情 - 1010 一元多项式求导 (25 分) (pintia.cn)

 

我的代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
int main()
{
    vector<int> numlist;
    int a;
    while (cin>>a)
    {
        numlist.push_back(a);
        if (getchar()=='\n')
        {
            break;
        }
    }
    
    int arr[numlist.size()];
    copy(numlist.begin(),numlist.end(),arr);
    vector <int> de; //输出结果的数组 
    
    int l=sizeof(arr)/sizeof(int);
    for (int i=0;(i+1)<l;)
    {
        if (arr[i+1]!=0 && arr[i]!=0)
        {
            int a=arr[i]*arr[i+1];
            de.push_back(a);
            int b=arr[i+1]-1;
            de.push_back(b);
        }
        i+=2;
    }
    vector<int>::iterator it;         //it实际上是一个地址
    for (it=de.begin();it!=de.end();++it)
    {
        if (it==de.begin())
            cout<<*it;
        else
            cout<<' '<<*it;
    }
    return 0;
}

运行结果:

 哇,我人真傻了,为什么总是部分正确啊(虽然我自己测试的实例都感觉是正确的),题目中我有一个地方不理解:就是a和b如果都是0,分别有一个是0,那么究竟应该怎样输出呢?感觉题目并没有给出明确的要求。。。

 下面是我在网上看到的其他回答:

我傻了,我又搞复杂了:原来分别读取两个数可以直接使用一个while循环,每个循环都cin两个数(因为这道题是全部读入,然后结果全部输出)

#include<iostream>
using namespace std;
int main() 
{
    int a,b;
    int x=1;
    while(cin>>a>>b)//输入 
    {
        if(b==0)
          break;//舍弃 
        if(!x)
          cout<<" ";
        else
          x=0;
        cout<<a*b<<" "<<b-1;
    }
    if(x)
        cout<<"0 0";
    return 0;
}
 

(5条消息) PAT乙级1010_song68753的博客-CSDN博客

posted @ 2021-11-27 13:04  EowynTang  阅读(29)  评论(0)    收藏  举报