这题逻辑很强。。
要理解多项式中 a,n在多项式中的作用,X前没有数字时,将a置为1,后面没有^时将n置为零。用op来保存正负号。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
int a, n, x;
string s;
while (cin >> x)
{
cin.get();
long long ans = 0;
int op;
while (cin.peek() != '\n')
{
n = 0;
a = 0;
op = 1;
if ('-' == cin.peek())
{
cin.get();
op = -1;
}
if ('+' == cin.peek())
{
cin.get();
op = 1;
}
if (isdigit(cin.peek()))
{
// while (isdigit(cin.peek()))
// a = a * 10 + cin.get() - '0';
cin >> a;
}
else
a = 1;
if ('X' == cin.peek())
{
cin.get();
if ('^' == cin.peek())
{
cin.get();
// while (isdigit(cin.peek()))
// n = n * 10 + cin.get() - '0';
cin >> n;
}
else
n = 1;
}
ans += op * a * pow(x, n);
//cout << ans << endl << op << endl << a << endl << n << endl;
}
cout << ans << endl;
}
}