alwaysBeAStarter

博客园 首页 新随笔 联系 订阅 管理

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=83

这道题实际上和UVA357 (链接 http://www.cnblogs.com/yanblog/p/6994437.html) 是一样的。但是我花了好长时间一直是WA。最后发现是我处理数据的问题。因为所有的input都是0.05的倍数,所以我对所有数据都进行处理使得所有数据都是1的倍数。所以应该input*20,但是我用input*100/5,导致一些数据结果不一样。

代码如下:

 1 #include <iostream>
 2 #include <math.h>
 3 #include <stdio.h>
 4 #include <cstdio>
 5 #include <algorithm>
 6 #include <string.h>
 7 #include <cstring>
 8 #include <queue>
 9 #include <vector>
10 #include <functional>
11 #include <cmath>
12 #define SCF(a) scanf("%d", &a)
13 #define IN(a) cin>>a
14 #define FOR(i, a, b) for(int i=a;i<b;i++)
15 typedef long long Int;
16 using namespace std;
17 
18 int main()
19 {
20     double num;
21     Int ways[6005] = { 0 };
22     int types[11] = { 1, 2, 4, 10, 20, 40, 100, 200, 400, 1000, 2000 };
23     ways[0] = 1;
24     FOR(i, 0, 11)
25     {
26         FOR(j, types[i], 6005)
27         {
28             ways[j] += ways[j - types[i]];
29         }
30     }
31 
32     while (scanf("%lf", &num) == 1)
33     {
34         double n = num * 20;
35         int nin = (int)(n);
36         if (nin == 0)
37             break;
38         printf("%6.2lf%17lld\n", num, ways[nin]);
39     }
40     return 0;
41 }

 

posted on 2017-06-13 20:28  alwaysBeAStarter  阅读(89)  评论(0编辑  收藏  举报