小 M 要制作一种黑暗饮料,这种饮料的原料有 n 种,编号为 1-n ,已知小 M 的容器最多容纳 v 升材料,黑暗料理的各种原料配比为 a1 : a2 : a3 : ... : an, 每种原料分别有b1,b2,... bn升。 问小 M 最多可以制作多少升这种饮料。小 M 使用的各种原料体积和不能超过 v 。
数据范围:
, 
输入第一行,两个正整数 n 和 v ,表示原料种类数和容器容积。输入第二行包含 n 个数 a1,a2,a3,...an ,表示 n 种原料的配比。 输入第三行包含 n 个数 b1,b2,b3...bn ,表示小 M 拥有的各种原料数。 (数字间以空格隔开)
输出包含一个非负数,表示小M最多可以制作多少饮料,结果保留4位小数。
1 100 1 40
40.0000
2 100 1 1 50 50
100.0000
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int v=in.nextInt();
int sum=0;
double[]a=new double[n];
double[]b=new double[n];
for (int i = 0; i <n ; i++) {
a[i]=in.nextDouble();
sum+=a[i];
}
for (int i = 0; i <n ; i++) {
b[i]=in.nextDouble();
}
double weightMax=b[0]/a[0]*sum;
//int weightMaxIndex=0;
for (int i = 1; i < n; i++) {
double maxV=b[i]/a[i]*sum;
if(maxV<weightMax){
weightMax=maxV;
// weightMaxIndex=i;
}
}
if(weightMax>=v){
keepFour(v);
}else{
keepFour(weightMax);
}
}
public static void keepFour(double d1){
DecimalFormat df=new DecimalFormat("#0.0000");
System.out.println(df.format(d1));
}
}
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
private static List<Double> lista;
private static List<Double> listb;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int V = in.nextInt();
double suma = 0;
double min = Double.MAX_VALUE;
lista = new ArrayList<>(n);
listb = new ArrayList<>(n);
for (int i = 0; i < n; i++) {
double temp = in.nextDouble();
//构造配比数组
lista.add(temp);
//计算每份饮料所需体积
suma+=temp;
}
for (int i = 0; i < n; i++) {
double temp = in.nextDouble();
//构造拥有原料体积数组
listb.add(temp);
}
for (int i = 0; i < n; i++) {
//求在原料允许的情况下,最多能做多少份饮料
min = Math.min(listb.get(i)/lista.get(i), min);
}
//在原料允许的情况下最多能做的饮料体积
double ans2 = min*suma;
//比较容器体积和ans,求出较小值即为答案
double ans = Math.min(V,ans2);
DecimalFormat df = new DecimalFormat("0.0000");
System.out.println(df.format(ans));
}
}
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,v;
cin>>n>>v;
int a[n], b[n], s=0;
double r = 10000000;
for(int i=0;i<n;i++){
cin>>a[i];
s += a[i];
}
for(int i=0;i<n;i++){
cin>>b[i];
if(1.0*b[i]/a[i]<r)
r = 1.0*b[i]/a[i];
}
printf("%.4f\n", min(s*r, 1.0*v));
return 0;
} n,v = list(map(int,input().strip().split(' ')))
a = list(map(int,input().strip().split(' ')))
b = list(map(int,input().strip().split(' ')))
ratio = []
for i in range(n):
ratio.append(b[i]/a[i])
max_v = min(ratio)*sum(a)
#配出来小于v,则输出max_v
if max_v < v:
print(format(max_v,'.4f'))
#否则输出v,肯定能配出来
else:
print(format(v,'.4f'))
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,v;
cin>>n>>v;
vector<double>a(n),b(n);
double res=v,sum=0.0,tmp;
for(int i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
}
for(int i=0;i<n;i++)
{
cin>>b[i];
tmp=b[i]/a[i];
res=min(res,tmp);
}
tmp=res*sum;
res=tmp < v ? tmp : v;
cout << fixed << setprecision(4)<<res<<endl;
return 0;
} import sys
if __name__ == '__main__':
n, v = list(map(int, sys.stdin.readline().split()))
list_proportion = list(map(int, sys.stdin.readline().split()))
list_save = list(map(int, sys.stdin.readline().split()))
eve_pro = v/sum(list_proportion)
while True:
for i in range(n):
if list_save[i] < list_proportion[i] * eve_pro:
eve_pro = list_save[i]/list_proportion[i]
break
else:
break
res = 0
for i in range(n):
res += eve_pro * list_proportion[i]
print('%.4f' % res)
package main
import (
"fmt"
"bufio"
"os"
"strconv"
"strings"
"math"
)
func getResult(n int, V int, arrayA []int,arrayB []int) float64 {
var result float64
var min = math.MaxFloat64
for i := 0; i < n; i++ {
if float64(arrayB[i])/float64(arrayA[i]) < min {
min = float64(arrayB[i])/ float64(arrayA[i])
}
}
for i := 0; i < n; i++ {
result += (float64(arrayA[i]) * min)
}
if(result >= float64(V)) {
result = float64(V)
}
return result
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
s := scanner.Text()
str_slice := strings.Fields(s)
n,_ := strconv.Atoi(str_slice[0])
V,_ := strconv.Atoi(str_slice[1])
scanner.Scan()
s = scanner.Text()
str_slice = strings.Fields(s)
arrayA := make([]int, n)
arrayB := make([]int, n)
for i := 0; i < n; i++ {
arrayA[i],_ = strconv.Atoi(str_slice[i])
}
scanner.Scan()
s = scanner.Text()
str_slice = strings.Fields(s)
for i := 0; i < n; i++ {
arrayB[i],_ = strconv.Atoi(str_slice[i])
}
///////////////////////////////////////
res := getResult(n,V,arrayA,arrayB)
fmt.Printf("%.4f\n",res)
}
}