#include<stdio.h>
int main()
{
long long a[15000]={1};
long long i,j;
long long coin[15]={1,2,4,10,20,40,100,200,400,1000,2000};
for(i=0;i<11;i++)
{
for(j=coin[i];j<15000;j++)
a[j]=a[j]+a[j-coin[i]];
}
double f,f1;
while(scanf("%lf",&f)!=EOF)
{
f1=f;
f=f*20+0.5;
//f=f*100.0/5.0;
if((int)f==0)
break;
else
printf("%6.2lf%17lld\n", f1, a[(int)f]);
}
return 0;
9.9999
*/
int main()
{
long long a[15000]={1};
long long i,j;
long long coin[15]={1,2,4,10,20,40,100,200,400,1000,2000};
for(i=0;i<11;i++)
{
for(j=coin[i];j<15000;j++)
a[j]=a[j]+a[j-coin[i]];
}
double f,f1;
while(scanf("%lf",&f)!=EOF)
{
f1=f;
f=f*20+0.5;
//f=f*100.0/5.0;
if((int)f==0)
break;
else
printf("%6.2lf%17lld\n", f1, a[(int)f]);
}
return 0;
}
在这里说一下精度
1 : f=f*20+0.5;
2 : f=f*100.0/5.0;
这两种输出的差别说白了就是f乘以20后的小数要进行4设5如
试一下下面的这组数据就能体现出差别
/*9.9999
*/