Ural_1036. Lucky Tickets(DP + 高精度)
2011-10-18 17:15
337 查看
纠结的高精度,终于拿下了。。。转移方程很简单 dp[i][j] = dp[i-1][j-k] {k| 0, 1, 2 .... , 9},高精度整了一下午。悲剧,各种wa。。。重新敲了一遍,终于过了。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N = 550; const int M = 50; const int inf = 10000; int dp[M+5] [M+5]; void add(int a[M+1], int b[M+1]){ int i; for(i = 1; i <= M; i++){ a[i] += b[i]; } for(i = 1; i <= M; i++){ a[i+1] += a[i]/inf; a[i] %= inf; } } void mul(int a[M+1], int b[M+1]){ int c[2*M+1], i, j; memset(c, 0, sizeof(c)); for(i = 1; i <= M; i++) for(j = 1; j <= M; j++) c[i+j-1] += a[i]*b[j]; for(i = 1; i <= M; i++){ c[i+1] += c[i]/inf; c[i] %= inf; } for(i = 1; i <= M; i++) a[i] = c[i]; } void display(int a[M+1]){ int j, i = M; while(a[i] == 0 && i > 0) i--; if(i == 0) printf("0\n"); else{ printf("%d", a[i]); for(j = i-1; j > 0; j--){ printf("%04d", a[j]); } } cout << endl; } int main(){ //freopen("data.in", "r", stdin); int n, s, i, j, k; while(~scanf("%d%d", &n, &s)){ if(s&1){ printf("0\n"); continue; } else { memset(dp, 0, sizeof(dp)); for(i = 0; i < 10; i++) dp[1][i][1] = 1; for(i = 1; i <= n; i++) for(j = 0; j <= s/2; j++) for(k = 0; k <= 9 && j >= k; k++) add(dp[i][j], dp[i-1][j-k]); mul(dp [s/2], dp [s/2]); display(dp [s/2]); } } return 0; }
相关文章推荐
- Ural_1013. K-based Numbers. Version 3(dp + 高精度)
- URAL 1108. Heritage 高精度大数乘法
- hdoj 5568 sequence2 【dp + 高精度】
- 2786: Ural1142 Relation (递推+高精度)
- Ural 1012. K-based Numbers. Version 2 &&1013. K-based Numbers. Version 3 DP+高精度
- 【URAL 1513】Lemon Tale(DP+高精度)
- UVA 10069 Distinct Subsequences(dp + 高精度)
- URAL 1036(dp+高精度)
- DP+高精度 URAL 1036 Lucky Tickets
- POJ 2711 Regular Words(DP + 高精度)
- POJ 2602|URAL 1048|Superlong Sums|高精度加法
- URAL 1036 Lucky Tickets (高精度,数位dp)
- ACM k进制高精度优化 URAL 1803 The Czechs' Rifles 滚动数组
- URAL1036——DP+高精度—— Lucky Tickets
- poj 1625 (AC自动机 + dp + 高精度(java) )
- 【BZOJ2786】【Ural1142】Relation 递推,动态规划,高精度,Python
- [poj3378] Crazy Thairs (DP + 树状数组维护 + 高精度)
- URAL 1009|URAL 1012|URAL 1013|K-based Numbers|高精度|动态规划
- URAL - 1012 DP+高精度
- URAL - 1013 DP+高精度+滚动数组