一、题目链接:
http://lx.lanqiao.cn/problem.page?gpid=T632
二、题目描述:
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。
输入格式
输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数。
输出格式
输出一行,包含1个实数,表示吃完所有包子的时间。
样例输入
4 3 2 20 30 15 2
样例输出
22.50
数据规模和约定
0<x<100;0<y<100;0<z<100;0<x1<=1000000;0<y1<=10000000;0<z1<=10000000;0<p<=1000
三、解题思路
先通分,然后手动模拟除法计算即可,详见代码。
四、代码
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
int main() {
int x, y, z, x1, y1, z1, p;
cin >> x1 >> y1 >> z1 >> x >> y >> z >> p;
ll a = x * y1 * z1 + y * x1 * z1 + z * x1 * y1;
ll b = x1 * y1 * z1;
printf("%lld.", a / b);
a %= b;
while (p-- > 1) {
printf("%lld", a * 10 / b);
a = a * 10 % b;
}
printf("%lld\n", a * 10 / b + ((a * 10 % b) * 10 >= 5 * b));
return 0;
}