后面的m行,每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。
输入的最后有两个0。
#include <stdio.h>
#include <string.h>
int main()
{
int i,j,n,m,q[1003];
double p[1003],dp[10003];
while(scanf("%d%d",&n,&m),n||m)
{
for(i=0;i<m;i++)
scanf("%d%lf",&q[i],&p[i]);
for(i=0;i<=n;i++)
dp[i]=1;
for(i=0;i<m;i++)
{
for(j=n;j>=q[i];j--)
dp[j]=dp[j]<dp[j-q[i]]*(1.0-p[i])?dp[j]:dp[j-q[i]]*(1.0-p[i]);
}
printf("%.1lf%%\n",(1-dp[n])*100);
}
return 0;
}