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;
}

posted @ 2020-08-16 21:46  财盛  阅读(434)  评论(0编辑  收藏  举报