猴子吃包子

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

注意点:

  • 除法计算
    应该用(x1yz+y1xz+z1xy)/(xyz)代替x1/x+y1/y+z1/z
  • 保留p位
    先算出整数位输出,然后采用进位取余求出p位,当p==1时要考虑下一位四舍五入

代码

#include<iostream>
using namespace std;

double x,y,z,x1,y1,z1;
int p;

int main(){


	cin>>x>>y>>z>>x1>>y1>>z1>>p;
	
	int t = x1*y*z+y1*x*z+z1*x*y;
	int d = x*y*z;
	int sum = t / d;
	cout<<sum<<".";
	
	t =  t % d;
	while(p){
		t *= 10;
		sum = t / d;
		t %= d;
		
		if(p == 1){
			t *= 10;
			if(t / d >= 5)
				sum++;
		}
		cout<<sum;
		p--;
	}
	
	cout<<endl;
	
	return 0;
	
}

猜你喜欢

转载自blog.csdn.net/fjd7474/article/details/108551114