本题要先利用斐波那契数列公式,然后很巧妙地利用对数求出前四位
解释转自CSDN博主queuelovestack
关于本题利用欧拉公式的部分
关于求利用对数求前四位的部分
#include<bits/stdc++.h> using namespace std; int fib[20]; int main(){ ios::sync_with_stdio(false); // freopen("in.in", "r", stdin); fib[0] = 0; fib[1] = 1; for(int i=2; i<20; i++) fib[i] = fib[i-1] + fib[i-2]; int n=0; while(cin >> n){ if(n<20) cout << fib[n] << endl; else{ double num = -0.5*log10(5.0) + n*log10((1.0+sqrt(5.0))/2.0); num -= (int)num; num = pow(10, num); while(num < 1000) num *= 10; cout << (int)num << endl; } } return 0; }