UVA 147 - Dollars(母函数)

题目链接

看着就像赤裸裸的母函数,目测10*30000*30000的复杂度会超吧,试试的打吧,特搞笑的好几个月没打了,哎,啥也忘了。。。找找以前做的题,复习了下。。中间小错误不断,最后竟然AC了。。。本来还想打表的。。

 1 #include <stdio.h>

 2 #include <string.h>

 3 #define N 30010

 4 #define eps 0.00000001

 5 long long  p1[N],p2[N];

 6 int main()

 7 {

 8     int a[12] = {5,10,20,50,100,200,500,1000,2000,5000,10000};

 9     int i,j,k;

10     double n;

11     p1[0] = 1;

12     for(i = 0;i <= 10;i ++)

13     {

14         for(j = 0;j <= 30000;j ++)

15         {

16             for(k = 0;;k += a[i])

17             {

18                 if(k+j > 30000) break;

19                 p2[k+j] += p1[j];

20             }

21         }

22         for(j = 0;j <= N;j ++)

23         {

24             p1[j] = p2[j];

25             p2[j] = 0;

26         }

27     }

28     while(scanf("%lf",&n)!=EOF)

29     {

30         if(n == 0) break;

31         k = (int)(n*100+eps);

32         printf("%6.2lf%17lld\n",n,p1[k]);

33     }

34     return 0;

35 }

你可能感兴趣的:(uva)