noi 1.5 36 计算多项式的值
描述
假定多项式的形式为xn+xn-1+…+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值。
输入
输入仅一行,包括x和n,用单个空格隔开。x在float范围内,n <= 1000000。
输出
输出一个实数,即多项式的值,精确到小数点后两位。保证最终结果在float范围内。
样例输入
2.0 4
样例输出
31.00
题意
输入一个x,再输入一个n,首次为x的n次方,第二次就是x的n减1次方,第三次n减2......一直到x的2次方,最后再来个x加1,最后把这些数的和加起来就好了。
思路
首先肯定是输入了。
1.如何解决每次n都要递减的变化:使用for循环,这里就厉害了,编程的思维~,for循环里的变量不仅可以++(for(int i=1;i<=n;i++){}),还可以--(for(int i=n;i>=0;i--)),就很奇葩,这时候我们就可以用i来代替n来完成n的每次变化。
2.如何求x的i次方:上文解释了如何完成n的每次变化,所以这时候也就是x的i次方。为了完成x的i次方我们就可以用一个新函数“pow(,)”来解决,pow的括号内的就是一个数的几次方,逗号前是这个数,逗号后是几次方,比如pow(2,3)就是2的3次方,pow(15,20)就是15的20次方。
以上两个问题解决后就需要用一个变量来存储每次变化后得到的数的总和就好了。
代码实现
#include<iostream>
#include<cmath>
using namespace std;
int main(){
float x,n;
float a=0;
cin>>x>>n;
for(int i=n;i>=0;i--){//循环
a=a+pow(x,i);//求平方并记录
}
printf("%.2f",a);//按照题目要求输出
return 0;
}