列表

详情


JD17. 配比

描述

小 M 要制作一种黑暗饮料,这种饮料的原料有 n 种,编号为 1-n ,已知小 M 的容器最多容纳 v 升材料,黑暗料理的各种原料配比为 a1 : a2 : a3 : ... : an, 每种原料分别有b1,b2,... bn升。 问小 最多可以制作多少升这种饮料。小 使用的各种原料体积和不能超过 v 

数据范围:

输入描述

输入第一行,两个正整数 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;
}

上一题