PKU 1953-World Cup Noise
問題概要
n桁の二進数の数値のうち,1が2連続しないものの総数を求めよ
解法
フィボナッチ数列に帰着される
実装(C++)
#include <cstdio> #include <iostream> using namespace std; typedef long long lli; lli memo[50]; lli solve(int x){ if(x<=0)return 1; if(x==1)return 2; if(memo[x]>0)return memo[x]; return memo[x]=solve(x-1)+solve(x-2); } int main() { int t; cin>>t; for(int i=0;i<t;i++){ int n; cin>>n; cout<<"Scenario #"<<i+1<<":"<<endl; cout<<solve(n)<<endl<<endl; } return 0; }