思路:背包的入门题
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <cmath>
#define ll long long
using namespace std;
const int maxn = 1e4 + 5;
int n, m, feiyong[maxn];
double jilv[maxn], dp[maxn];
int main()
{
while(scanf("%d%d", &n, &m) != EOF && (n || m))
{
for(int i = 0; i < m; i++)
{
scanf("%d%lf", &feiyong[i], &jilv[i]);
jilv[i] = 1 - jilv[i];
}
for(int i = 0; i <= n; i++)
{
dp[i] = 1.0;
}
for(int i = 0; i < m; i++)
{
for(int j = n;j >= feiyong[i]; j--)
{
dp[j] = min(dp[j], dp[j-feiyong[i]]*jilv[i]);
}
}
double out = (1 - dp[n]) * 100;
printf("%.1lf%%\n", out);
}
return 0;
}