放货物(C)

题目描述

小明是一名快递员,他现在手上一共有N个快件需要运送。但是货车有限,所以我们希望用最少的货车来进行工作。现在已知,一辆车的限定额度为最多放置K件货物。此外,小明很不喜欢13这个数字,所以他不希望任何一辆货车中的货物数量为13。 现在小明想要知道,最少使用多少辆货车能够将这N个快件都放置到货车上。

输入描述

题目包含多组输入 每一组输入一行两个数,分别表示N 和 K 1<=N<=1000 1<=K<=1000

输出描述

输出一行一个数字,表示最优结果。

示例

输入

13 13
5 2

复制

输出
2
3

#include <stdio.h>

int solution(int N, int K)
{
    int result = 0;

    // TODO: 请在此编写代码
    if(K == 13){
        K = 12;
    }
    if(N%K == 0){
        result = N / K;
    }
    else if(N%K == 13){
        result = N / K + 2;
    }
    else{
        result = N / K + 1;
    }

    return result;
}

int main()
{

    int n, k;
    while (scanf("%d %d", &n, &k) != EOF)
    {
        int result;
        result = solution(n, k);
        printf("%d\n", result);
    }
    return 0;
}

说明:一定要判断余数为13的情况T^T

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是代码实现: ```C #include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit IN1 = P1^0; // 小车电机控制引脚1 sbit IN2 = P1^1; // 小车电机控制引脚2 sbit IN3 = P1^2; // 小车电机控制引脚3 sbit IN4 = P1^3; // 小车电机控制引脚4 sbit IR1 = P2^0; // 红外传感器1引脚 sbit IR2 = P2^1; // 红外传感器2引脚 sbit IR3 = P2^2; // 红外传感器3引脚 sbit IR4 = P2^3; // 红外传感器4引脚 sbit Start = P3^0; // 启动按钮引脚 sbit Stop = P3^1; // 停止按钮引脚 uchar flag_start = 0; // 是否启动标志 uchar flag_stop = 0; // 是否停止标志 uchar flag_load = 0; // 是否装载货物标志 uchar flag_down = 0; // 是否货物标志 uint count_time = 0; // 计时器 uint count_stop = 0; // 停车计时器 void delay(uint n) // 延时函数 { uint i, j; for (i = n; i > 0; i--) for (j = 110; j > 0; j--); } void main() { IN1 = IN2 = IN3 = IN4 = 0; // 小车停止 while (1) // 循环 { if (!flag_start && Start == 0) // 按下启动按钮 { flag_start = 1; // 设置启动标志 flag_load = 0; // 清除装载货物标志 flag_down = 0; // 清除货物标志 count_time = 0; // 重置计时器 } if (flag_start && !flag_load) // 启动小车并装载货物 { IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 0; if (IR1 == 1 && IR2 == 1 && IR3 == 1 && IR4 == 1) flag_load = 1; // 装载货物标志置1 } if (flag_load && !flag_down) // 货物并停车 { IN1 = IN2 = IN3 = IN4 = 0; // 小车停止 if (count_stop++ >= 5000) // 停车5秒钟 { flag_down = 1; // 货物标志置1 count_stop = 0; // 重置停车计时器 } } if (flag_down) // 小车返回起点 { IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 1; if (IR1 == 1 && IR2 == 1 && IR3 == 1 && IR4 == 1) flag_start = 0; // 重置启动标志,等待下一次启动 } if (Stop == 0) // 按下停止按钮 { flag_start = 0; // 重置启动标志 flag_load = 0; // 清除装载货物标志 flag_down = 0; // 清除货物标志 count_time = 0; // 重置计时器 count_stop = 0; // 重置停车计时器 IN1 = IN2 = IN3 = IN4 = 0; // 小车停止 } delay(1); // 延时1ms count_time++; // 计时器加1 if (count_time >= 10000) // 运行10秒钟 { flag_start = 0; // 重置启动标志 flag_load = 0; // 清除装载货物标志 flag_down = 0; // 清除货物标志 count_time = 0; // 重置计时器 count_stop = 0; // 重置停车计时器 IN1 = IN2 = IN3 = IN4 = 0; // 小车停止 } } } ``` 代码实现的基本思路是,按下启动按钮后,小车开始前进,直到红外传感器检测到货物,标志位 flag_load 置1,小车停下,并等待一段时间(这里是5秒钟),标志位 flag_down 置1,小车开始返回起点,直到再次检测到红外传感器,标志位 flag_start 置0,等待下一次启动。同时,还加入了停止按钮和计时器,实现了一些基本的安全防护和运行控制。需要注意的是,由于小车的具体实现方式和红外传感器的检测方法可能不同,代码中的具体实现需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值