场次: 牛客小白月赛86
编号:1.水盐平衡
题意:给定 浓度不同的 两份盐水溶液,第一份:a单位盐,b单位水,
第二份:c单位盐,d单位水,
现需使 第一份 第一份盐水溶液的浓度变得和第二份盐水溶液的浓度一样,
水多加盐,盐多加水, 问 给溶液1 加水 还是 加盐?
原问题: 给定a,b,c,d ,求 给溶液1 加水 或 加盐,使 溶液1 的浓度 等于 溶液2 。 判断,对溶液1 做 对应操作:加水 还是 加盐 ? 子问题: a盐, b水; c盐, d水;
本质: 使 a/b = c/d ,
分析: 条件1:a/b>c/d? b+: a+ ;
条件2:a/b = c/d
import java.util.Scanner;
public class Main { //main函数入口
public static void main(String[] args) {
//创建了一个Scanner对象,它用于从标准输入(键盘)读取用户输入的数据。
//System.in表示标准输入流,通过Scanner类可以方便地读取各种类型的输入数据
Scanner in = new Scanner(System.in); //获取键盘输入数据、
//从输入中读取一个整数并将其存储在变量T中。
int T = in.nextInt(); // 获取案例组数
while (T-- > 0) { //泛型?
// 这是一个循环结构,while关键字后面的条件T-- > 0表示只要变量T大于0,就会一直执行循环体中的代码。
// T--表示先使用T的值,然后将T的值减1。
int a = in.nextInt(); //nextInt()方法用于读取下一个整数。
int b = in.nextInt();
int c = in.nextInt();
int d = in.nextInt();
System.out.println(addSaltOrWater(a, b, c, d));
}
}
//调用addSaltOrWater方法,并将从输入中读取的四个整数作为参数传递给它。
//然后,将addSaltOrWater方法返回的结果打印到控制台。
public static char addSaltOrWater(int a, int b, int c, int d) {
double contain1 = (double) a / b; // 第一份盐水溶液的浓度
double contain2 = (double) c / d; // 第二份盐水溶液的浓度
//计算了两份盐水溶液的浓度。
//通过将其中一个操作数转换为double类型,可以确保在进行除法运算时得到一个准确的浮点数结果。
if (contain1 >contain2 ) {
return 'S'; // 加水 , 实际上是让溶液1 与 溶液2 作比较, 浓度大说明盐多,就加水;
} else {
return 'Y'; // 加盐 ,实际上是让溶液1 与 溶液2 作比较, 浓度小说明水多,就加盐;
}
}
}