小H有一杯n升的果汁,里面有t%的糖,但是小H想喝一杯至少50%糖的果汁(几升都可以),设加糖x毫升,喝y毫升,问x+y最少是几。注:百分比=糖/(糖+果汁)
输入格式
一行,n (0<n<10^9),t (0<t<50)
输出格式
一行, min{x+y}毫升(保留整数)
输入输出样例
输入
1 20
输出
600
说明/提示
1升果汁中有20%的糖,最优解是喝100毫升果汁,并加入500毫升糖,则:
百分比=糖/糖+果汁=(200+500)/(500+1000−100)=700/1400=50%
x+y=600,可以证明这个结果是最优解之一
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// 定义变量,存储输入数据
double n, t;
// 从用户输入读取果汁容量和糖分百分比
cout << "请输入果汁容量和糖分百分比(中间以空格分隔):" << endl;
cin >> n >> t;
// 计算当前果汁中的糖含量和当前糖分百分比
double sugar = n * t / 100;
double curr_t = sugar / (sugar + n);
// 如果当前糖分不足50%,则需要添加糖
if (curr_t < 0.5) {
// 计算需要添加的糖量
double target_t = 0.5;
double target_sugar = target_t * (sugar + n) - n;
double add_sugar = target_sugar - sugar;
// 计算添加糖后的糖含量和糖分百分比
double new_sugar = sugar + add_sugar;
double new_t = new_sugar / (new_sugar + n);
// 计算喝下去的果汁和添加的糖的总量
double total = n + add_sugar;
cout << "x+y最小值为:" << round(total) << "毫升" << endl;
} else {
// 如果当前糖分已经达到或超过50%,则不需要添加糖
cout << "x+y最小值为:" << round(n) << "毫升" << endl;
}
return 0;
}
似乎不太对啊,码上团建