UVA 10516 Another Counting Problem
来源:互联网 发布:淘宝贝幼儿园收费 编辑:程序博客网 时间:2024/04/28 08:17
大意略。
思路:组合数学神马的,最难思考了。
我想这道题的结论可以记下来,即:满K叉树的前i层的不同的树的数量为:f[i-1]^K + 1
参考了这篇博客:解法
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <cstdio>#include <queue>#include <cmath>using namespace std;const int MAXN = 1010;int base, n;struct bign{int s[MAXN], len;bign () {memset(s, 0, sizeof(s)); len = 1;}bign (int num) { *this = num;}bign (const char *num) {*this = num;}bign operator = (int num){char s[MAXN];sprintf(s, "%d", num);*this = s;return *this;}bign operator = (const char *num){len = strlen(num);for(int i = 0; i < len; i++) s[i] = num[len-i-1] - '0';return *this;}bign operator + (const bign &b){bign c;c.len = 0;for(int i = 0, g = 0; g || i < max(len, b.len); i++){int x = g;if(i < len) x += s[i];if(i < b.len) x += b.s[i];c.s[c.len++] = x % 10;g = x / 10;}return c;}void clean(){while(len > 1 && !s[len-1]) len--;}bign operator - (const bign &b){bign c;c.len = 0;for(int i = 0, g = 0; i < len; i++){int x = s[i] - g;if(i < b.len) x -= b.s[i];if(x >= 0) g = 0;else{g = 1;x += 10;}c.s[c.len++] = x;}c.clean();return c;}bign operator * (const bign &b){bign c;c.len = len + b.len;for(int i = 0; i < len; i++){for(int j = 0; j < b.len; j++){c.s[i+j] += s[i] * b.s[j];}}for(int i = 0; i < c.len; i++){c.s[i+1] += c.s[i] / 10;c.s[i] %= 10;}c.clean();return c;}bign operator *= (const bign &b){*this = *this * b;return *this;}string str() const{string res = "";for(int i = 0; i < len; i++) res = char(s[i]+'0') + res;if(res == "") res = "0";return res;}}f[2020];ostream& operator << (ostream &out, const bign &x){out << x.str();return out;}void cal(){f[0] = 1;for(int i = 1; i <= n; i++){bign temp = 1;for(int j = 1; j <= base; j++){temp *= f[i-1];}f[i] = temp+1;}}void solve(){printf("%d %d ", base, n);cout<<f[n]-f[n-1]<<endl;}int main(){while(~scanf("%d%d", &base, &n) && (base || n)){cal();solve();}return 0;}
- UVA 10516 Another Counting Problem
- uva 10516 - Another Counting Problem(dp)
- UVA 10516 - Another Counting Problem(递推)
- The Counting Problem UVA
- uva 11490 - Just Another Problem
- UVA 11490 Just Another Problem
- UVa Problem Solution: 10198 - Counting
- UVa 1640 The Counting Problem
- UVA 11490 - Just Another Problem(数论)
- uva 11490 - Just Another Problem(数学)
- uva 11490 ——Just Another Problem
- UVa 11195 - Another n-Queen Problem
- UVa Problem 10198 Counting (数数)
- UVA - 11490 Just Another Problem (因数分解)
- UVA - 11195 Another n-Queen Problem 位运算符+dfs
- Problem 009——UVa 1225 - Digit Counting
- UVA 1640 The Counting Problem(统计题,找规律 + dfs)
- 【模拟】Another Easy Problem
- cocos2d-x XML 读取 libxml2使用
- 使用Java RTP传输声音和视频的程序
- 如何关闭快播QvodTerminal.exe后台运行
- javaweb_04,05-Servlet开发的一些重要细节
- 客户端推广得好,域名就不重要了
- UVA 10516 Another Counting Problem
- 北京北京
- 代码注入之远程线程篇
- codeforces #164 div2
- 有序数组最小绝对值。
- 采用分布式思想构建企业应用 与 单点登录框架
- 2013.01
- 我学习的路线图
- 在使用MEF+MVVM模式中要学会活用RaisePropertyChanged属性更改通知