20200816--计算多项式的值(奥赛一本通P68 3题)
//假定多项式的形式为x的n次方+x的n-1次方+...+x的平方+X+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值.x在float范围内,n<=1000000,多项式的值精确到小数后2位,保证最终结果在float范围内。
//自己解法
#include <bits/stdc++.h>
using namespace std;
float x,y=1,z=0;
int n,a;
int main()
{
cout<<"请输入x的值:"; cin>>x;
cout<<"请输入n的值:"; cin>>n;
a=n;
for(int j=a;j>=0;j--)//n,n-1,n-2....注意一个数的0次方是1,所以此处最小值是0
{
for(int i=0;i<j;i++)//求x的n次方,再求x的n-1次方,依此类推;
{
y*=x;
}
z=z+y;
y=1;
}
cout<<"结果是:"<<fixed<<setprecision(2)<<z;
return 0;
}
书上解法:
#include <bits/stdc++.h>
using namespace std;
float x,y=1,z=1;//注意此处z的初始值为1,即x的0次方
int n;
int main()
{
cout<<"请输入x的值:"; cin>>x;
cout<<"请输入n的值:"; cin>>n;
//一次for循环,其实是反过来计算,即x的1次方,x的2次方,。。。
for(int i=1;i<=n;i++)//求x的n次方,再求x的n-1次方,依此类推;
{
y*=x;
z+=y;
}
cout<<"结果是:"<<fixed<<setprecision(2)<<z;
return 0;
}