UVa674 coin change的强化,一样的思路,不过先全部乘上个100就好了,只是在精度上必须注意double和long long,因为这个WA了2次,想了N久才想到。还有一次PE了,居然是每一行第一个输出前都有6个空格,简直傻眼
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define maxn 30010
int coin[12]={10000,5000,2000,1000,500,200,100,50,20,10,5};
long long dp[maxn];
void hehe()
{
int i,j;
memset(dp, 0, sizeof(dp));
dp[0]=1;
for(i=0;i<11;i++)
{
for(j=coin[i];j<maxn;j++)
dp[j]+=dp[j-coin[i]];
}
}
int main()
{
double n;
int a,b,m;
hehe();
while(scanf("%d.%d",&a,&b)&&(a+b))
{
m=a*100+b;
n=m*1.0/100;
printf("%6.2lf",n);
printf("%17lld\n",dp[m]);
}
return 0;
}