发布网友 发布时间:2022-04-24 14:20
共1个回答
热心网友 时间:2023-10-16 03:45
59213102012-05-10 01:30:52Accepted120346MS320K705 BC++Parker
limit 为0不代表一定不能申到学校哦~
#include"stdio.h"
#include"string.h"
struct A
{
int a;
double b; //记录“非”!
}E[1011];
double min(double a,double b)
{
return a<b?a:b;
}
int main()
{
double pro[10011]; //记录“非”!
double temp;
int i,l;
int limit,n;
while(scanf("%d%d",&limit,&n),limit||n)
{
for(i=1;i<=n;i++)
{
scanf("%d%lf",&E[i].a,&temp);
E[i].b=1-temp;
}
if(n==0) // limit 为0不代表一定不能申到学校哦~
{
printf("0.0%%\n");
continue;
}
for(l=0;l<=limit;l++)
pro[l]=1;
for(i=1;i<=n;i++)
for(l=limit;l-E[i].a>=0;l--)
pro[l]=min(pro[l],pro[l-E[i].a]*E[i].b);
printf("%0.1lf%%\n",100-100*pro[limit]);
}
return 0;
}