UVa:147 Dollars

来源:互联网 发布:淘宝红人店铺申请 编辑:程序博客网 时间:2024/05/17 22:27

这里要注意浮点数误差。以前上课的时候没好好听结果这里完全不知道,以至于发现浮点数误差的时候感到莫名其妙。

以后和浮点数有关的乘法就这么写了:int p=(int)(a*b+0.5); (a,b是double)。

 

 

#include <iostream>#include <cstdio>#include <iomanip>using namespace std;int main(){    long long dp[6005]={0};    int m[]={0,1,2,4,10,20,40,100,200,400,1000,2000};    dp[0]=1;    for(int i=1;i<12;++i)      for(int j=0;j<6005;++j)      if(j>=m[i])          dp[j]=dp[j]+dp[j-m[i]];       double p;       while(scanf("%lf",&p)&&p)       {           int pp=(int)(p*20+0.5);           printf("%6.2lf%17lld\n",p,dp[pp]);       }    return 0;}


 

原创粉丝点击