时间限制: 1000 ms 内存限制: 65536 KB
1
【题目描述】
对于多项式f(x)=ax3+bx2+cx+d和给定的a,b,c,d,x,计算f(x)的值,保留到小数点后7位。
【输入】
输入仅一行,包含5个实数,分别是x,及参数a、b、c、d的值,每个数都是绝对值不超过100的双精度浮点数。数与数之间以一个空格分开。
【输出】
输出一个实数,即f(x)的值,保留到小数点后7位。
【输入样例】
2.31 1.2 2 2 3
【输出样例】
33.0838692
说明:
主要考查怎么把数学问题应用在编程上,涉及到数学的指数运算。
1
思路分析:
在指数运算x2中,x称为底数,2称为指数,也称为x的平方。我们知道x的平方其实就是两个x相乘。
那么x3称为x的立方,是3个x相乘。同理xn,是n个x相乘。
所以,ax3+bx2+cx+d在C/C++中应写成:
a * x * x * x + b * x * x + c * x + d
f(x)在数学中称为函数,在C/C++中,可以把它当做是一个变量,用来接收这个公式的结果。
当然直接输出该公式的结果也行。
最后,根据这公式进行运算即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
求解过程:
声明5变量。
输入变量值。
根据要求输出它们的结果。
1
2
3
4
5
难点:
本题的难点是理解该等式。
1
参考代码 - C++:
代码说明:
100.0*b/a,因为b和a都是整数,如果直接相除其结果也是整数,除了强制类型转换为double类型外,还可以把整数100变 为浮点数100.0,这样其结果也是浮点数。
1
2
3
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double x, a, b, c, d;
cin >> x >> a >> b >> c >> d;
cout << fixed << setprecision(7);
cout << a * x * x * x + b * x * x + c * x + d;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
参考代码 - C语言:
代码说明:
C语言printf函数输出百分号的方法是写两个%
1
2
3
#include <stdio.h>
int main()
{
double x, a, b, c, d;
scanf("%lf %lf %lf %lf %lf", &x, &a, &b, &c, &d);
printf("%.7f", a * x * x * x + b * x * x + c * x + d);
return 0;
}