您的位置:首页 > 其它

九度题目1433

2016-03-05 17:13 295 查看
#include<stdio.h>

#include<algorithm>

using namespace std;

struct E{

    double j;
double f;
double s;
bool operator <(const E &a)const{
    return s>a.s;
}

}buf[1000];

int main(){

         int i,n,m;
while (scanf("%d %d",&m,&n)!=EOF){
if(m==-1&&n==-1)break;
for(i=0;i<n;i++){
    scanf("%lf %lf",&buf[i].j,&buf[i].f);
buf[i].s=buf[i].j/buf[i].f;
}
sort(buf,buf+n);
i=0;
double ans=0;
while (m>0&&i<n){
if(m>=buf[i].f){
    m-=buf[i].f;
ans+=buf[i].j;
}
else {
    ans+=m/buf[i].f*buf[i].j;
m=0;
}
i++;
}
printf("%.3lf\n",ans);
}
return 0;
}

这个题目犯了一些错误:

比如在给j、f  赋值的时候,格式的错误   因为两个变量是double型的  所以占位符应该写为  %lf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C