小 M 要制作一种黑暗饮料,这种饮料的原料有 n 种,编号为 1-n ,已知小 M 的容器最多容纳 v 升材料,黑暗料理的各种原料配比为 a1 : a2 : a3 : ... : an, 每种原料分别有b1,b2,... bn升。 问小 M 最多可以制作多少升这种饮料。小 M 使用的各种原料体积和不能超过 v 。
数据范围:
, ![](https://www.nowcoder.com/equation?tex=1%20%5Cle%20v%20%5Cle%2010%5E6%20%5C)
输入第一行,两个正整数 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) } }