2 해설
-
3
这道题直接用斐波那契递推公式求解即可。(f[i]=f[i-1]+f[i-2])
递推部分代码:
const int N=1e6; long long t,f[N+100]; void fib(){ f[1]=f[2]=1; For(i,3,N) f[i]=f[i-1]+f[i-2]; } int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>t; fib(); while(t--){ long long k; cin>>k; cout<<f[k]<<'\n'; }千万别用递归,会超时记得开long long~ -
0
#include<bits/stdc++.h> using namespace std; const int MAXN=1000001; long long a[MAXN+100],n,m[MAXN+100],x=-100; int main() { // freopen(".in","r",stdin); // freopen(".out","w",stdout); cin>>n; ios::sync_with_stdio; cin.tie(0); cout.tie(0);//输入输出优化 a[1]=1; a[2]=1; for(int i=1;i<=n;i++){ cin>>m[i]; x=max(m[i],x);//求最大值 } for(int i=3;i<=x;i++){ a[i]=a[i-1]+a[i-2];//建立斐波那契数列 } for(int i=1;i<=n;i++)cout<<a[m[i]]<<endl;//输出 return 0; }
- 1
정보
- ID
- 384
- 시간
- 1000ms
- 메모리
- 256MiB
- 난이도
- 6
- 태그
- (N/A)
- 제출 기록
- 22
- 맞았습니다.
- 12
- 아이디