ACM XYNUOJ 2079 兰州烧饼


                                                   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,所以最后都能一次烙完。所以有以下两种方法:

  1. 判断是不是倍数关系,选择输出2*k/n+1和2*k/n
  2.  利用向上取整的思想,直接输出

题目没有说明是多组数据,但实际要求。 

方法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;
}

猜你喜欢

转载自blog.csdn.net/qq_30007603/article/details/81192830