2079: 兰州烧饼时间限制: 1 Sec 内存限制: 64 MB
题目描述
烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只能弄一个的话,效率就太低了。有这么一个大平底锅,一次可以同时放入k个兰州烧饼,一分钟能做好一面。而现在有n个兰州烧饼,至少需要多少分钟才能全部做好呢?
输入
依次输入n和k,中间以空格分隔,其中1 <= k,n <= 100000
输出
输出全部做好至少需要的分钟数
样例输入
3 2
样例输出
3
思路:这是一道规律题,首先地便是找到方法。把烧饼正反面看做一个整体,则所需烙的面数为2*n,每次最多可以烙k面,那么2*n/k便是全部放满的次数,一次一分钟,所以也就是时间。不管当2*n/k=几,因为小于k,所以最后都能一次烙完。所以有以下两种方法:
- 判断是不是倍数关系,选择输出2*k/n+1和2*k/n
- 利用向上取整的思想,直接输出
题目没有说明是多组数据,但实际要求。
方法1:
#include <stdio.h>
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
printf("%d\n",n<k?2:n*2/k+(n*2%k!=0));
return 0;
}
方法2:
#include <stdio.h> //兰州烧饼
#include <math.h>
int main()
{
int n,k;
while(~scanf("%d %d",&n,&k))
printf(n<=k?"2\n":"%.lf\n",ceil(2.0*n/k)); //ceil(double x)返回double,向上取整
//不管怎样,2*n/k=几,一次就能烙完
return 0;
}