XDOJ1181

阅读: 评论:0

XDOJ1181

XDOJ1181

Description

        除了写题,zqs还喜欢烤面包。

        烤面包需要正反两面各烤一次,每个烤箱同时只能烤一个面包的一面,烤一面需要3分钟,现在他要烤N个面包,有M个烤箱,问烤完所有的面包需要多少时间

 

Input

 有多组输入数据,第一行为一个数字case,代表有多少组输入数据 (case<=20)
 以下每组数据一行有2个整数n,m,代表需要烤n个面包,有m个烤箱 (0<=N<=1000,1<=M<=1000)

Output

 一共case行,每行一个整数对应该组数据拷完所有面包需要多少时间

Sample Input

2
2 1
3 3

Sample Output

12
6

解题思路:

如果你认为每次一个面包烤完一面后接着烤第二面的话,那么你就想错了。举个例子:5个面包,2个烤箱

(1)1号面包一面,2号面包一面

(2)1号面包第二面,2号面包第二面

(3)3号面包一面,4号面包一面

(4)3号面包第二面,4号面包第二面

(5)5号面包一面

(6)5号面包第二面

结果需要3×6=18分钟。

其实正确的结果应该如下:

(1)1号面包一面,2号面包一面

(2)3号面包一面,4号面包一面

(3)5号面包一面,1号面包第二面

(4)5号面包第二面,2号面第二面

(5)3号面包第二面,4号面包第二面

结果需要3×5=15分钟

所以要分情况讨论:

  • 如果n<=m,结果就是6分钟
  • 如果n>m,结果就是3×(2n/m+[2n%m]),其中的[2n%m]表示,2n关于m的模如果为0则为0,不为0则为1
#include<iostream>
#include<cstdio>
using namespace std;int main()
{int caseN;while(cin>>caseN){for(int i=0;i<caseN;++i){int n,m;cin>>n>>m;if(n==0){cout<<0<<endl;continue;}if(n<=m){cout<<6<<endl;continue;}int minute = 3;int t = 2*n/m;if(2*n%m!=0)++t;cout<<t*minute<<endl;}}return 0;
}

 

最后欢迎大家访问我的个人网站: 1024s

本文发布于:2024-02-02 06:11:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170682549541890.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23