printf用%d时答案整数部分是对的,但是保留两位小数是就0.00了???
查看原帖
printf用%d时答案整数部分是对的,但是保留两位小数是就0.00了???
78469
czj2006楼主2021/1/30 09:29

printf用%d时答案整数部分是对的,但是保留两位小数是就0.00了???

#include<bits/stdc++.h>
using namespace std;
int n;
double t,ans;
struct data {
	double m;
	double v;
} a[101];

bool cmp (data a,data b) {
	return (a.v/a.m)>(b.v/b.m);
}

int main(){
	scanf("%d%d",&n,&t);
	for (int i=1;i<=n;i++)  scanf("%d%d",&a[i].m,&a[i].v);
	sort(a+1,a+n+1,cmp);
	for (int i=1;i<=n;i++) {
		if (t>=a[i].m) {
			t-=a[i].m;
			ans+=a[i].v;
		}
		else {
			ans+=t*(a[i].v/a[i].m);
			break;
		}
	}
	printf("%.2lf",ans);
	return 0;
}
2021/1/30 09:29
加载中...