JD17. 配比
描述
输入描述
输入第一行,两个正整数 n 和 v ,表示原料种类数和容器容积。输入第二行包含 n 个数 a1,a2,a3,...an ,表示 n 种原料的配比。 输入第三行包含 n 个数 b1,b2,b3...bn ,表示小 M 拥有的各种原料数。 (数字间以空格隔开)输出描述
输出包含一个非负数,表示小M最多可以制作多少饮料,结果保留4位小数。示例1
输入:
1 100 1 40
输出:
40.0000
示例2
输入:
2 100 1 1 50 50
输出:
100.0000
C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-05-20
#include<stdio.h> int main(){ int n,i,t=0; long int v,sa=0; scanf("%d %ld",&n,&v); int a[n],b[n]; double bv[n],vmax; for (i=0;i<n;i++) {scanf("%d",&a[i]); sa+=a[i];} for (i=0;i<n;i++) scanf("%d",&b[i]); for(i=0;i<n;i++){ if(b[i]<v*1.0/sa*a[i]){ t=-1; break; } } vmax=v; if (t==0) printf("%.4lf",vmax); else{ vmax=sa*sa; for(i=0;i<n;i++){ bv[i]=b[i]*1.0/a[i]*sa; if (vmax>bv[i]) vmax=bv[i]; } printf("%.4lf",vmax);} return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-05-20
#include<stdio.h> int main(){ int n,i,t=0; long int v,sa=0; scanf("%d %ld",&n,&v); int a[n],b[n]; double bv[n],vmax; for (i=0;i<n;i++) {scanf("%d",&a[i]); sa+=a[i];} for (i=0;i<n;i++) scanf("%d",&b[i]); for(i=0;i<n;i++){ if(b[i]<v*1.0/sa*a[i]){ t=-1; break; } } vmax=v; if (t==0) printf("%.4lf",vmax); else{ vmax=sa*sa; for(i=0;i<n;i++){ bv[i]=b[i]*1.0/a[i]*sa; if (vmax>bv[i]) vmax=bv[i]; } printf("%.4lf",vmax);} return 0; }