题目描述
烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只能弄一个的话,效率就太低了。有这么一个大平底锅,一次可以同时放入k个兰州烧饼,一分钟能做好一面。而现在有n个兰州烧饼,至少需要多少分钟才能全部做好呢?
输入
依次输入n和k,中间以空格分隔,其中1 <= k,n <= 100000
输出
输出全部做好至少需要的分钟数
样例输入
3 2
样例输出
3
代码
#include<stdio.h>
int main()
{
int n,k,a,b;
while(scanf("%d %d",&n,&k)!=EOF)
{//输入多组n,k的数值
if(n<k)
{
printf("2\n");
}
else
{
if(2*n%k==0)
{
printf("%d\n",2*n/k);
}
if(2*n%k!=0)
{
printf("%d\n",2*n/k+1);
}
}
}
return 0;
}
自我理解之处
//把问题简单化:n个烧饼,可以理解为要烤2n次,而每锅只能烤k次,那么答案就是 2n / k 次
//但还要考虑三种情况:
//1.如果 n < k,那么只需要2次
//2.如果 n > k && (2n % k) !> 0,那么需要 2n / k 次
//3.如果 n > k && (2n % k) > 0,那么需要 2n / k + 1 次
//(n * 2 % k > 0) 返回0,1;
如样例,三个兰州烧饼编号a,b,c,首先a和b,然后a和c,最后b和c,3分钟完成