类型转换:a = int (100*ta+0.5) 防止精度丢失
.......因为这个WA了两次
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 30000 + 10;
long long dp[maxn];
int P[12] = {0,5,10,20,50,100,200,500,1000,2000,5000,10000};
int main() {
memset( dp, 0, sizeof(dp) );
dp[0] = 1;
for(int i=1; i<=11; ++i) {
for(int j=P[i]; j<=maxn; ++j) {
dp[j] += dp[j-P[i]];
}
}
int a;
double ta;
while( cin >> ta && ta) {
a = int (100*ta+0.5);
printf("%6.2f%17lld\n", ta, dp[a]);
}
return 0;
}