引言

这是最近在网上看到,好像是阿里算法岗的一个编程题,所以没事做了一下,感觉非科班的做起来挺难顶的,花了不少时间,这里写了博客记录下,以防自己忘记

题目概述

菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(sku)的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们拣选。有一天沐哲去菜鸟仓库参观,无意中发现第1个货架格子编码为1,第2-3个分别为1,2,第4-6个格子分别是1,2,3,第7-10个格子编号分别是1,2,3,4,每个格子编号都是0-9中的一个整数,且相邻格子的编号连在一起有如下规律1|12|123|1234|…|123456789101112131415|…|123456789101112131415……n 这个仓库存放的商品品类非常丰富,共有1千万多个货架格子。沐哲很好奇,他想快速知道第k个格子编号是多少?

直接上代码(后续会把数字排列的规律写上来)

下面展示一些 内联代码片

def find_row(n):input = nindex = 1val = 0front_sum = 0while input > val:val_last = valval += front_sum + len(str(index))*(index-10**(len(str(index))-1)+1)if index%9 == 0:front_sum += len(str(index))*9*10**(len(str(index))-1)#print("front_sum = ",front_sum)#print("val = ",val)#print("val_last",val_last)index += 1index_cols = val-val_lastreturn index-1,index_cols,val_lastdef find_num(col):digit = 1digit_sum = 9while col > digit*digit_sum:col -= digit*digit_sumdigit += 1digit_sum *= 10print("digit = ", digit)print("col==", col)index = 1if digit >1:while(col>digit):col -= digit*indexindex += 1num = 10**(digit-1)+index-1return str(num)[col-1]return colif __name__ == '__main__':box = 46#row:格子所在行号#now_cols:该行总列数#val_last:该行之前的所有格子总数row, now_cols,val_last = find_row(box)print("row: ",row)print("now_cols: ",now_cols)print("val_last: ",val_last)cols = box-val_lastprint("cols = ",cols)print(find_num(cols))

第一个函数find_row其实就是为了算出这个格子在第几行第几列,规律就是上图,每一次升位(从1位数变两位数)就把前一位数所有的格子存入front_sum。

相关链接

链接: https://blog.csdn.net/bertdai/article/details/77620139?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-0&spm=1001.2101.3001.4242.

`

菜鸟仓库-货物格子问题编程题相关推荐

  1. 阿里巴巴算法岗编程题:菜鸟仓库

    菜鸟仓库 菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们挑选.有一天沐哲取菜鸟仓库参观,无 ...

  2. 判断三角形java代码_java基础编程题之异常处理

    以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力.今天的练习的十八题是java的异常处理的使用. 1.检测年龄不能为负数和大于 ...

  3. javascript编程题_如何开始使用JavaScript进行竞争性编程

    javascript编程题 by Priyabrata Biswas 通过Priyabrata Biswas 如何开始使用JavaScript进行竞争性编程 (How to get started w ...

  4. Java 笔试强训 牛客网选择编程题 01

    一.选择 1.单选 1.1.语法: public class Test3{public static void main(String[] args) {System.out.println(100 ...

  5. 网易2017春招笔试真题编程题集合

    网易2017春招笔试真题编程题集合 题目来源:牛客网 https://www.nowcoder.com/profile/7952866/test/7811777/83061 1.双核处理 题目描述 一 ...

  6. 网易2016游戏技术岗在线编程题(一)

    题目来源:牛客网-网易2016年研发工程师编程题. 1.小易的升级之路 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪 ...

  7. 百度2016研发工程师在线编程题

    题目链接:http://www.nowcoder.com/test/question/analytic?tid=1667855 [编程题]罪犯转移 C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入 ...

  8. 百亿题典之C++编程题面试题

    原文地址:百亿题典之C++编程题面试题作者:百亿题典 1. 在linked list中找倒数第N个结点 2. 倒转linked list 3. 二叉树的结点有指向parent的指针,求最近公共祖先 4 ...

  9. 《C语言程序教程》课后编程题

    1.3编程题 1.试参考本章例题编写计算梯形面积的C语言程序,梯形的上底.下底和高分别用a.b.h表示,并用a=10,b=20,h=5测试所编写的程序. #include <stdio.h> ...

最新文章

  1. FPGA设计思想之“逻辑复制”
  2. 图像条纹检测 python_【连载4.5】特征检测技术研究面向强反射表面的多传感器三维检测技术研究...
  3. 移动办公计算机,最适合移动办公的三款掌上电脑点评
  4. Sesame 2.7.0 发布,Java 的 RDF 开发包
  5. php输出一条直线,Photoshop脚本 绘制一条线
  6. javascript promise
  7. 什么是数据、元数据、主数据?这可能是大多数人没看过的解释
  8. 人生百态:三件事现出三类人
  9. desktop docker 无法卸载_docker 安装教程和常见问题
  10. Android11 如何将系统默认设置中文
  11. C# ping 局域网扫描
  12. Web页面引入思源黑体
  13. python3之http.server模块
  14. QC1.0、QC2.0、QC3.0、QC4.0协议介绍
  15. 泰坦尼克号第n遍重温泪点
  16. C语言 求最大值和最小值
  17. 数据库连接超时的处理
  18. Direct Shot Correspondence Matching
  19. Matlab中sym无法使用
  20. 计算机图形学的主要研究内容是什么?

热门文章

  1. 启动虚拟机sd 0:0:0:0: [sda] Assuming drive cache: write through错误解决 本人实测!
  2. MATLAB统计分析—描述性统计
  3. 终于有人把前端鉴权讲明白了
  4. 集成融云的视频通话功能
  5. CLH Lock 原理
  6. 使用Java合并excel的sheet的操作
  7. 【福利】小程序开发资源干货汇总
  8. 毫米波雷达和视觉传感器融合的检测仿真代码
  9. 深圳APP开发红孩儿金融APP
  10. 谷歌无法加载pdf文档_如何从Google文档文档创建PDF