网易笔试编程题-不要二

2023-11-04

题目描述:
二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
小易想知道最多可以放多少块蛋糕在网格盒子里。
输入描述:
每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)
输出描述:
输出一个最多可以放的蛋糕数
输入例子:
3 2
输出例子:
4
分析:“任意两块蛋糕的欧几里得距离不能等于2”是解决这道题问题的关键。首先需要了解什么是“欧几里得距离”,通俗来讲,两点之间的距离就是欧几里得距离,因此,在网格中,只有横向和纵向才可能欧几里得距离为2,因此,可以将问题简化为“任意两块蛋糕的横向或纵向的距离不能为2”。
画图说明:
这里写图片描述

假设网格是一个 11 X 9 的网格,满足条件的蛋糕位置用红色方格标记,因此,我们只要算出网格中的总红方格数。为此,我们将网格分成四部分,分别用蓝色,紫色和黄色表示。蓝色部分的长宽为四的倍数,紫色部分又分为两部分,右侧长为四的倍数,宽为总宽减去蓝色部分的宽,底下部分的宽为四的倍数,长为总长度减去蓝色部分长度,黄色部分为右下角剩余部分,黄色部分显示如下:
这里写图片描述
因为网格的长宽是被四整除处理过的,所以右下角的黄色部分是不会出现4 x 4的网格的,但可能出现 3 x 4,2 x 4, 1 x 4等,所以方便起见,我还是贴出了4 x 4的网格方便大家查阅。黄色部分中的网格怎么计算呢?我分成了四种情况:
1. 黄色部分的长宽对4取余都小于等于2,则说明黄色部分的红框集中在左上角,那么只需将两个余数相乘即可得到红色方框的个数。
2. 黄色部分的长对4取余小于等于2且宽大于2,则说明红色方框集中于左半侧,那么红色方框个数为长对4的余数 乘以2。
3. 黄色部分的宽对4取余小于等于2且长大于2,则说明红色方框集中于上半侧,那么红色方框个数为 宽对4取余的余数 乘以 2
4. 其他情况是黄色部分的长宽均大于2,则说明红色方框个数为左上脚四个方框 加上 右下角多余出来的方框个数,右下角多出来的红色方框个数计算方法为:(长%4 - 2)* (宽%4 - 2)。
程序代码如下:

#include <iostream>

using namespace std;

int main(void)
{
    int W, H;
    cin >> W >> H;
    int cakeNum = 0;
    cakeNum += (W/4) * (H/4) * 8;
    int last_W = W - W/4 * 4;
    int last_H = H - H/4 * 4;
    if (last_W != 0)
    {
        cakeNum += H/4 * 4 * last_W / 2;
    }
    if (last_H != 0)
    {
        cakeNum += W/4 * 4 * last_H / 2;
    }
    if (last_H != 0 && last_W != 0)
    {
        if (W%4 <= 2 && H%4 <= 2)
        {
            cakeNum += (W%4) * (H%4);
        }
        else if (W%4 > 2 && H%4 <= 2)
        {
            cakeNum += 2 * (H%4);
        }
        else if (H%4 > 2 && W%4 <= 2)
        {
            cakeNum += 2 * (W%4);
        }
        else
        {
            cakeNum += 4 + (H%4 - 2) * (W%4 - 2);
        }
    }
    cout << cakeNum << endl;
    return 0;
}

值得注意的是 取余运算符的优先级 小于 乘除运算符的优先级,所以先取余再算乘除需要给取余的运算式加上括号,不要忘喽。
若有不对之处,敬请指正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网易笔试编程题-不要二 的相关文章

随机推荐

  • Flutter上你需要一个简单实用的验证码输入Widget

    现在很多app都有填写验证码的需求 而这个验证码的UI流行非普通的输入框 毕竟移动开发主要矛盾是设计师日益增长的天马行空同落后的开发之间的矛盾 作为跨平台方案的Flutter自然也会用到这种控件 本着少造轮子 多copy的原则 想去找个验证
  • 《Python进阶系列》六:Python中的文件对象

    文件对象的seek 和tell 打开一个文件 读取内容 是很常见的操作 不过有的时候我们还需要反复读取文件中的内容 如果多次打开文件读取再多次关闭 显然不是特别好的操作 我们可以借助Python文件对象的seek 和tell 函数 来实现反
  • 为什么那么多人用小智ai

    ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT 3 5丨OpenAI ChatGPT GPT 4 GPT 3 人机对话 ChatGPT应用 小智ai 小智ai 小智ai 小智ai Chat
  • Shader理论(2):Unity中的各种坐标系

    目录 前言 一 坐标系 1 1 世界坐标系 World Space 1 2 本地坐标系 Local Space 模型坐标系 1 3 屏幕坐标系 Screen Space 1 4 观察坐标系 ViewPort Space 视口坐标系 1 5
  • 如何设计一个短信发送功能

    本文主要分享了如何设计一个发送短信功能 一 总结简述 1 梳理多个平台短信API的发送参数 集成封装提供统一的API 支持多个短信平台 阿里云 腾讯云 百度云 京东云 七牛云 灵活切换 2 提供存储方案 表结构设计 3 提供真实生产项目代码
  • 内核配置中的:Multifunction device drivers

    Multifunction Device Drivers 多功能设备Linux下驱动开发 先来一个英文简介 Multifunction devices embed several functions e g GPIOs touchscree
  • kafka的一些基本命令

    kafka brokers test 8090 zookeeper servers test 2181 1 查看test服务器中的所有topic bin kafka topics sh list zookeeper test 2181 2
  • stable diffusion(Lora的训练)

    以坤坤为例 上网随便找了几个坤坤的人脸图像 作为训练的数据集 1 训练环境搭建 建议看一遍教程 虽然这个up主好像不是很专业的样子 不过流程差不多是这样的 重点关注一下虚拟环境搭建完之后 在终端选择配置的操作 就是一堆yes no 的选项
  • 国产麒麟系统KylinOS Server V10 SP2安装MongoDB6.0版本

    1 下载安装包 安装下载链接 https fastdl mongodb org linux mongodb linux aarch64 rhel82 6 0 6 tgz 2 上传到服务器 3 解压安装包 tar zxvf mongodb l
  • AF Http request 代理形式回调

    AF是以block的方式将请求结果返回 这样的处理思路我感觉很好 每个请求都单独处理自己的回调 AF的请求也可以使代理的形式进行回调 HIHTTPRequest 以代理的形式回调的话需要创建一个请求类 然后将请求结果以代理的形式回调 HIH
  • 毕业论文参考文献格式设置(以GB/T 7714-2015为例)

    Ref https zhuanlan zhihu com p 376138185 下载链接 https www endnote com style download chinese standard gb t7714 numeric 链接
  • 四路服务器选型项目,四路服务器详细

    四路服务器详细 内容精选 换一换 弹性云服务器 Elastic Cloud Server 是一种可随时自动获取 计算能力可弹性伸缩的云服务器 可帮助您打造可靠 安全 灵活 高效的应用环境 确保服务持久稳定运行 提升运维效率 本节介绍REST
  • 【Unity】UnityのTimelineが実機で再生されない件について

    Unity Unity Timeline 実機 再生 件 https qiita com hide gugen items 7fee18be2c789144ed74 経緯 Editor上 普通 再生 日AssetBundle化 iPhone
  • 华为隐藏功能扩大内存代码大全_华为手机绝密功能,在拨号界面就能揭开

    你知道吗 华为手机里的那些隐藏功能 打开方式居然是 拨号界面 只要在拨号界面输入指定代码 就会自动弹出隐藏功能 今天我就来给大家科普科普 那些隐藏在华为手机里的代码大全 测试代码 虽然这个代码叫测试代码 但对咱们普通用户来说却是一个非常实用
  • JS大坑之19位数的Number型精度丢失问题详解

    这篇文章主要介绍了JS大坑之19位数的Number型精度丢失问题 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 有兴趣的朋友们可以一起来学习探讨 最近在实现一个需求的时候 需要接入第三方的接口 先调用A接口 A
  • 关于ip5306芯片按键关机后仍然有输出

    官方手册中提到 负载自动检测时间 TloadD 负载电流持续小于 45mA 32 s时 芯片会自动进入休眠状态 实际上可能会因为个体差异 芯片空载就60ma 导致无法关机 实际上做这个芯片测试 发现了几个问题 芯片PIN5按键不可抛弃 如果
  • 计算机网络原理选择题

    1 1 电信业一般认为宽带骨干网数据传输速率应达到 d a 640kbps b 640mbps c 1gbps d 2gbps 2 异步时分多路复用 tdm 技术中的时间片分配策略是 c a 预先分配但不固定 b 预先分配固定不变 c 动态
  • 第八章 真实的谎言

    第八章 真实的谎言 我先给大家讲一个石头汤的故事 很久以前 在东欧的一个地方 发生了一次大饥荒 人们都以戒备的心理囤积起他们可以找到的任何食物 并把这些食物都藏了起来 甚至于连他们的朋友和邻居都 不告诉 有一天 一个小商贩驾着他的马车来到一
  • Ant Design与Ant Design pro入门

    一 Ant Design入门 1 什么是Ant Design Ant Design是阿里蚂蚁金服团队基于React开发的ui组件 主要用于中后台系统的使用 官网 https ant design index cn 特性 提炼自企业级中后台产
  • 网易笔试编程题-不要二

    题目描述 二货小易有一个W H的网格盒子 网格的行编号为0 H 1 网格的列编号为0 W 1 每个格子至多可以放一块蛋糕 任意两块蛋糕的欧几里得距离不能等于2 对于两个格子坐标 x1 y1 x2 y2 的欧几里得距离为 x1 x2 x1 x