📄 main.cpp
字号:
/**********************************************************************************
67. ( NOI'94.1_3 ) 一个实数数列共有N项,已知a(i)=(a(i-1)-a(i+1))/2+d,
(1〈i〈N)(N<60) , 键盘输入N,d,a(1),a(n),m,输出 a(m)。
分析:
令b(i) = a(i)-d,则b(i) = (b(i-1) - b(i+1))/2
b(n) = c1*r1^n + c2*r2^n
r1 = 0.414 , r2 = -2.414
*********************************************************************************/
#include <stdio.h>
#include <math.h>
#define r1 0.41423562373
#define r2 -2.41423562373
#define RC_EXP(a,b,c,d) (a*d - b*c)
void main()
{
int m,n;
float d,a1,an;
float r1_n,r2_n;
float c1,c2;
float b1,bn;
float bm,am;
printf("输入n,d,a(1),a(n),m:\n");
scanf("%d %f %f %f %d",&n,&d,&a1,&an,&m);
b1 = a1 - d;
bn = an - d;
r1_n = (float)pow(r1,n);
r2_n = (float)pow(r2,n);
c1 = (float)-(RC_EXP(r2,b1,r2_n,bn)/RC_EXP(r1,r2,r1_n,r2_n));
c2 = (float)(RC_EXP(r1,b1,r1_n,bn)/RC_EXP(r1,r2,r1_n,r2_n));
bm = (float)(c1*pow(r1,m) + c2*pow(r2,m));
am = bm + d;
printf("a(m) = %8f \n",am);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -