首页 > 代码库 > 【UVA】580-Critical Mass
【UVA】580-Critical Mass
根据递推公式计算,需要打表不然可能会超时。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<stack> #include<queue> #include<map> #include<set> #include<list> #include<cmath> #include<string> #include<sstream> #include<ctime> using namespace std; #define _PI acos(-1.0) #define INF (1 << 10) #define esp 1e-6 typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> pill; /*=========================================== ===========================================*/ #define MAXD 50 int m; LL f[MAXD]; LL g[MAXD]; LL _g(int _n){ LL ans = (1 << _n) - f[_n]; return ans; } LL solve(int _n){ if(_n < 3) f[_n] = 0; else{ LL ans = (1 << (_n - 3)); for(int i = 2 ; i <= _n - 2 ; i++){ ans += g[i - 2] * (1 << (_n - i - 2)); } f[_n] = ans; } g[_n] = _g(_n); return f[_n]; } int main(){ memset(f,-1,sizeof(f)); LL ans ; for(int i = 0 ; i <= 30 ; i++) ans = solve(i); while(scanf("%d",&m) && m){ printf("%lld\n",f[m]); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。