东华大学OJ 基础85
85 计算多项式的值
作者:
问题描述 :
计算并输出当x<0.97时下列多项式的值,直到最后一项的绝对值小于threshold(该项不包括在多项式的结果中)为止。

输入说明 :
可输入多组测试数据,每组一行,每组包括两个实数,第一个为x(0.2≤x <0.97),第二个为threshold(≥0.000001),中间以空格分隔。
输出说明 :
对于每组测试数据,输出一行,为计算出的结果,保留6位小数。输出的结果前后均无空格。两组运算结果之间为空行。
输入范例 :
输出范例 :
//分子是numerator,分母是denominator,这俩单词我记住了。
//总的来说,循环类型的题型之一求和,需要掌握的几个数学函数,头文件是<math.h>
1、double pow(double x, double y);
2、double fabs(double x); //取绝对值
int abs(int x); //整形绝对值 ,头文件是 <stdlib.h>
3、double sqrt(double x);
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int tag = 0, i;
double x, threshold, item, sum;
double power, denominator, numerator;
while(scanf("%lf %lf", &x, &threshold) != EOF){
sum = 1;
i = 1;
#include <math.h>
int main()
{
int tag = 0, i;
double x, threshold, item, sum;
double power, denominator, numerator;
while(scanf("%lf %lf", &x, &threshold) != EOF){
sum = 1;
i = 1;
item = 0.5*x;
//chuli
while(fabs(item) >= threshold){
//chuli
while(fabs(item) >= threshold){
sum += item;
denominator = 1;
numerator = 0.5;
i++;
//chengji
power = pow(x, i);
//fenmu
for(int j = 1; j <= i; j++){
denominator *= j;
}
//fenzi
for(int j = 1; j < i; j++){
numerator *= (0.5-j);
}
item = (numerator/denominator)*power;
}
if(tag > 0){
printf("\n");
if(threshold > 1){
printf("0.000000\n");
}else{
printf("%.6lf\n", sum);
}
tag++;
}else{
if(threshold > 1){
printf("0.000000\n");
}else{
printf("%.6lf\n", sum);
}
tag++;
}
}
return 0;
}
numerator = 0.5;
i++;
//chengji
power = pow(x, i);
//fenmu
for(int j = 1; j <= i; j++){
denominator *= j;
}
//fenzi
for(int j = 1; j < i; j++){
numerator *= (0.5-j);
}
item = (numerator/denominator)*power;
}
if(tag > 0){
printf("\n");
if(threshold > 1){
printf("0.000000\n");
}else{
printf("%.6lf\n", sum);
}
tag++;
}else{
if(threshold > 1){
printf("0.000000\n");
}else{
printf("%.6lf\n", sum);
}
tag++;
}
}
return 0;
}
浙公网安备 33010602011771号