1053: 正弦函數(答題端)
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 10053 Solved: 4368
Submit Status Web Board
Description
輸入x,計算上面公式的前10項和。
Input
輸入一個實數x。
Output
輸出一個實數,即數列的前10項和,結果保留3位小數。
Sample Input
1
Sample Output
0.841
HINT
Source
***
思路:
去年遺留的題目,總是錯?那會也不清楚卡在哪裡了。。。。
for(int j=1; j<=10; j++)
ans=ans+pow(-1,j+1)*pow(x,2*j-1)/jie(2*j-1);
現在換一個思路,分開因式試一下也不對,原來自定義函數應該是 double 型。
Code1:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double jie(double x) {//遞歸求階乘
if(x<2.0)
return 1.0;
return jie(x-1)*x;
}
int main() {
double ans,x;
scanf("%lf",&x);
ans=0.0;
for(int j=1; j<=10; j++)
ans=ans+pow(-1,j+1)*pow(x,2*j-1)/(jie(2*j-1)*1.0);
printf("%.3lf\n",ans);
return 0;
}
Code2:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double jie(double x) {//遞歸求階乘
if(x<2.0)
return 1.0;
return jie(x-1)*x;
}
int main() {
double ans,x;
scanf("%lf",&x);
double k=x;
ans=k;//答案
double flag=1.0;//符号位
double Jie=1.0;//階乘的數字
for(int j=2; j<=10; j++) {
flag=flag*(-1.0);
k=k*x*x;
Jie=Jie+2.0;
ans+=flag*(k/jie(Jie));
// ans=ans+pow(-1,j+1)*pow(x,2*j-1)/(jie(2*j-1)*1.0);
}
printf("%.3lf\n",ans);
return 0;
}