蓝桥杯 猴子吃包子

问题描述
  从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃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;
}

猜你喜欢

转载自blog.csdn.net/Mmonster23/article/details/106010557