UVA 10590(完全背包,整数拆分+大数加法)
2013-07-05 16:34
501 查看
大数加法一位位存效率很低会TLE,我是10亿10亿存的。
#include<iostream> #include<vector> #include<cstring> #include<cstdio> #include<queue> #include<string> using namespace std; class bign { public: int a[10]; int leng; void print(); bign () {leng=0;memset(a,0,sizeof(a));} bign operator +(bign &b) const; }; void bign::print() { int f=1; if(leng==0) printf("0"); else for(int i=leng-1;i>=0;i--) { if(f) printf("%d",a[i]); else printf("%.9d",a[i]); f=0; } } bign bign::operator +(bign &b) const { int top=leng>b.leng?leng:b.leng; bign c; for(int i=0,g=0;i<top+1;i++) { long long s=a[i]+b.a[i]+g; g=0; if(s<1000000000) c.a[i]=s; else {c.a[i]=s%1000000000;g=s/1000000000;} } int j; for(j=top+2;;j--) if(c.a[j]!=0) break; c.leng=j+1; return c; } bign dp[5010]; int main() { int n; dp[0].a[0]=1; dp[0].leng=1; for(int i=1;i<=5000;i++) { for(int j=i;j<=5000;j++) { dp[j]=dp[j]+dp[j-i]; } } while(scanf("%d",&n)!=EOF) { dp .print(); putchar(10); } return 0; }
相关文章推荐
- 【解题报告】uva674_Coin Change(硬币找零, dp, 完全背包)
- uva10465 完全背包
- uva_11137_Ingenuous Cubrenc(完全背包)
- UVA - 357Let Me Count The Ways(完全背包)
- 算法->完全背包问题 UVa 674 Coin Change
- UVA 674 Coin Change(dp + 完全背包)
- UVA 674 Coin Change 钱币兑换问题 类似完全背包
- UVA 10465 Homer Simpson(dp + 完全背包)
- uva 10313 Pay the Price(完全背包)
- UVA 10465 Homer Simpson(完全背包)
- UVA 11137 Ingenuous Cubrency(完全背包)
- uva10590 整数拆分-大整数加法
- uva674 Coin Change ——完全背包
- UVA 357 Let Me Count The Ways (dp + 完全背包)
- UVALive 6896 Eureka Theorem(完全背包)
- UVA - 674 Coin Change(完全背包)
- uva 424 大数加法
- UVA 10306 e-Coins(二维完全背包)
- UVA 674 Coin Change(完全背包)
- Uva 12333 Revenge of Fibonacci (字典树 + 大数加法运算)