poj 3181 Dollar Dayz(背包总方案数高精度)

这个题容易WA,一般不会注意高精度问题,但对于高精度的处理很有技巧。

推荐http://www.cnblogs.com/kuangbin/archive/2012/09/20/2695165.html

里面给了五种方法,很不错

在这里附上大神的代码

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 long long a[1100],b[1100],inf;
 7 
 8 int main(){
 9     int n,k,i,j;
10     for(inf=1,i=0;i<18;i++) inf*=10;
11     scanf("%d%d",&n,&k);
12     memset(a,0,sizeof(a));
13     memset(b,0,sizeof(b));
14     a[0]=1;
15     for(i=1;i<=k;i++){
16         for(j=1;j<=n;j++){
17             if(j-i<0) continue;
18             b[j]=b[j]+b[j-i]+(a[j]+a[j-i])/inf;
19             a[j]=(a[j]+a[j-i])%inf;
20         }
21     }
22     if(b[n]) printf("%I64d",b[n]);
23     printf("%I64d\n",a[n]);
24     return 0;
25 }
View Code

 

posted @ 2013-07-16 10:33  zlyblog  阅读(250)  评论(0编辑  收藏  举报