问题描述
从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。
数据规模和约定
0<x<100;0<y<100;0<z<100;0<x1<=1000000;0<y1<=10000000;0<z1<=10000000;0<p<=1000
题解:这一题乍一看好像一步公式就算出来了,但是要注意这个p的规模,保留千位小数时就不能单纯的公式计算了,这里我采用的循环,一次输出一位。(要注意最后一位要进行四舍五入,题中虽然没提,但是不进位会报错)
//#############################
//
// 题目:猴子吃包子
// 日期:年月日
// 提交者:Ly
//
//#############################
#include <stdio.h>
#include <windows.h>
#pragma warning (disable:4996)
int main()
{
int x, y, z, x1, y1, z1, p, time, point, num;
scanf("%d%d%d%d%d%d%d", &x, &y, &z, &x1, &y1, &z1, &p);
time = (x1*y*z + y1*x*z + z1*x*y) / (x*y*z);
printf("%d.", time);
point = (x1*y*z + y1*x*z + z1*x*y) % (x*y*z);
while (p)
{
point = 10 * point;
num = point / (x*y*z);
point = point % (x*y*z);
if (p == 1)//最后一位需要四舍五入
{
point = (point * 10) / (x*y*z);
if (point >= 5)
num++;
}
printf("%d", num);
p--;
}
system("pause");
return 0;
}