题目:点击打开链接
转载链接:点击打开链接
以上两个公式是此题的关键,另外一个地方就是求出了 log10( f (n) ) 从而求 f ( n ) 的方法。
这是百度百科找来的说明,要掌握对数的运算性质。
完了算出小数部分,乘1000就是前4位了。
#include <cstdio> #include <cmath> int main() { int f[22]={0,1,1}; for (int i = 3 ; i <= 20 ; i++) f[i] = f[i-1] + f[i-2]; double n; double a1 = log10(1.0 / sqrt(5)); double a2 = log10((1 + sqrt(5)) / 2); while (~scanf ("%lf",&n)) { if (n <= 20) { printf ("%d\n",f[(int)n]); continue; } double ans = a1 + n * a2; ans -= floor(ans); ans = pow (10,ans); ans = (int)(ans * 1000); printf ("%.lf\n",ans); } return 0; }
以上两个公式是此题的关键,另外一个地方就是求出了 log10( f (n) ) 从而求 f ( n ) 的方法。
这是百度百科找来的说明,要掌握对数的运算性质。
完了算出小数部分,乘1000就是前4位了。