c++ Golden Apple

描述

有一排N棵苹果树。人们说其中一棵会结出金苹果。

我们想部署一定数量的检查员,以便对每棵苹果树进行检查。

每个检查员将被安排在其中一棵树下。为了方便起见,我们给这些树分配从 1 到 N 的编号。部署在i/th树(1≤i≤N)下的检查员将检查编号介于i−D和i+D(含)之间的树。

求实现目标所需的最少检查员人数。

输入描述

N D

输出描述

打印实现目标所需的最少检查员人数。

用例输入 1 

6 2

用例输出 1 

2

用例输入 2 

14 3

用例输出 2 

2

用例输入 3 

20 4

用例输出 3 

3

提示

样本输出 1

例如,我们可以通过在树3和树4下放置检查器来实现目标。

限制因素

  • 所有输入值均为整数。
  • 1≤N≤20
  • 1≤D≤20

解析:

  1. 输入:从标准输入中读入两个整数 n 和 d,其中 n 表示苹果树的数量,d 表示每个检查员负责检查的树的范围(左右各 d 棵树)。
  2. 计算:根据题意,实际需要检查的树的范围是 2d+1 棵树,这是因为每个检查员负责检查的范围是编号介于 i-D 和 i+D 之间的树,共 2d+1 棵。
  3. 计算最少需要的检查员人数:通过 n 除以检查范围得到商和余数,若余数为 0,则商就是最少需要的检查员人数;否则需要再多一个检查员,因为还有余下的树需要检查。
  4. 输出:将最少需要的检查员人数输出到标准输出流中。

代码:

#include<bits/stdc++.h> // 包含标准的 C++ 标准库的所有头文件
using namespace std; // 使用标准库的命名空间

int n, d; // 声明两个整数变量 n, d

int main()
{
    cin >> n >> d; // 从标准输入流中读入两个整数 n 和 d
    d = 2 * d + 1; // 计算实际上需要检查的树的范围

    if(n % d == 0) cout << n / d << endl; // 如果树的数量能被检查范围整除,则输出最少需要的检查员人数
    else cout << n / d + 1 << endl; // 否则输出最少需要的检查员人数(加1表示需要额外的一个人)

    return 0; // 返回程序执行成功
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值