UVA -580 组合数学

  

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define ll long long
using namespace std;
ll f[40];
ll g[40];
ll qpow(ll a,ll b){
  ll ans=1;
  while(b){
     if (b&1==1)ans=ans*a;
     a*=a;
     b/=2;
  }
  return ans;
}
void init(){
  f[0]=f[1]=f[2]=0;
  g[0]=1;g[1]=2;g[2]=4;
  for (int i=3;i<=30;i++){
     ll sum=0;
     for(int j=2;j<=i-2;j++){
        sum=sum+g[j-2]*qpow(2,i-j-2);
     }
     f[i]=qpow(2,i-3)+sum;
     g[i]=qpow(2,i)-f[i];
  }
}
int main(){
   init();
  int n;
  while(~scanf("%d",&n)&&n){
    printf("%lld\n",f[n]);
  }
  return 0;
}

 

全部评论

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务