提示:多种药水混合后的浓度=(浓度1*体积1+浓度2*体积2+……)/(体积和)
31 100 101002 100 2420 303 100 2420 20 30Example Output
0 0.00100 0.20300 0.23#include<stdio.h>int main(){ int c,i,j,k; double n,v,w,pi[101],sum,t1,t2,t; scanf("%d",&c); for(i=0;i<c;i++) { sum=0;t1=0;t2=0; scanf("%lf %lf %lf",&n,&v,&w); for(j=0;j<n;j++) scanf("%lf",&pi[j]); for(j=0;j<n;j++) { for(k=0;k<n-j-1;k++) { if(pi[k]>pi[k+1]) { t=pi[k];pi[k]=pi[k+1];pi[k+1]=t; } } } for(j=0;j<n;j++) { t1+=pi[j]; t2+=v; sum=(t1*v)/t2; if(j==0&&sum>w) { t2=0; sum=0; break; } if(sum>w) { t1=t1-pi[j]; t2=t2-v; sum=(t1*v)/t2; break; } } printf("%.0f %.2f/n",t2,sum/100); } return 0;}或者用g++提交#include<stdio.h>#include<algorithm>using namespace std; int pi[110]; int main() { int c,n,v,w; int i,j; scanf("%d",&c); while(c--) { scanf("%d%d%d",&n,&v,&w); for(i=0;i<n;i++) scanf("%d",&pi[i]); sort(pi,pi+n); double P=0;//浓度 int V=0; //当前的体积 for(i=0;i<n;i++) { if(P*V+pi[i]*v <= w*(V+v)) { P=(P*V+pi[i]*v)/(V+v); V+=v; } else break; } printf("%d %.2lf/n",V,P/100); } return 0; }
新闻热点
疑难解答