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; }
本文来自博客园,作者:EowynTang,转载请注明原文链接:https://www.cnblogs.com/tangcoder/p/15611628.html

浙公网安备 33010602011771号