C语言编程练习题_02兰州烧饼

C语言编程练习题_02兰州烧饼

题目来源于网络,代码使用VS Code编译运行通过。

烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只能弄一个的话,效率就太低了。
有这么一个大平底锅,一次可以同时放入k个兰州烧饼,一分钟能做好一面。
而现在有n个兰州烧饼,至少需要多少分钟才能全部做好呢?
例如:
	输入:
       n = 3  k = 2
    输出:
   	   time = 3

代码如下

/*

烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只能弄一个的话,效率就太低了。
有这么一个大平底锅,一次可以同时放入k个兰州烧饼,一分钟能做好一面。
而现在有n个兰州烧饼,至少需要多少分钟才能全部做好呢?

例如:  输入:
            n = 3  k = 2
        输出:
            time = 3

*/
 
/*
   思路分析:
    如果当前需要烘烤的烧饼数量小于等于能够一次性放入的烧饼数量(n <= k)  则只需要 2 分钟
    如果当前需要烘烤的烧饼数量大于能够一次性放入的烧饼数量(n > k),而且 满足 (2 * n) % k == 0 时,需要烘烤时间为(2 * n) / k
    如果当前需要烘烤的烧饼数量大于能够一次性放入的烧饼数量(n > k),而且 满足 (2 * n) % k != 0 时,需要烘烤时间为(2 * n) / k + 1

    烧饼有两面,每一面都需要被烘烤,n个烧饼需要烘烤 (2 * n) 次,
    当(2 * n)次正好整除 k 时,经过排布能够实现每一锅都烘烤 k 个烧饼面,因此总共需要的时间就为 (2 * n) % k
    否则,烘烤的时间应该再加一,余数 的烧饼还需要再烘烤一锅,耗费时间多一分钟。


*/


#include <stdio.h>

#define ERR_Input -1

/***************************************************************
	FunctionName:	int LZSB(const int k,const int n) 
	Purpose:		Calculate  the baking time
	Parameter:		
					const int k  锅内一次性可以制作的烧饼的个数
					const int n  总共需要制作的烧饼个数
	Return:			return time (minute)
	Remark:      	NONE
****************************************************************/

int LZSB(const int k,const int n)
{
    int time = 0 ;
    if(!k || !n)return ERR_Input;

    if(n <= k)return 2;
    if(!((2 * n) % k))time = (2 * n) / k;
    else time = ((2 * n) / k) + 1;
    return time;
}

int main()
{
    int k = 0 , n = 0;
    int time = 0;
    printf("\r\nPlease Input k and n!\r\n");
    scanf("%d %d",&k,&n);
    time = LZSB(k,n);
    if(time == ERR_Input)printf("\r\nErr_INput!\r\n");
    else printf("The time is %d minute\r\n",time);
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值