菜鸟仓库-货物格子问题编程题
引言
这是最近在网上看到,好像是阿里算法岗的一个编程题,所以没事做了一下,感觉非科班的做起来挺难顶的,花了不少时间,这里写了博客记录下,以防自己忘记。
题目概述
菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(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.
`
菜鸟仓库-货物格子问题编程题相关推荐
- 阿里巴巴算法岗编程题:菜鸟仓库
菜鸟仓库 菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们挑选.有一天沐哲取菜鸟仓库参观,无 ...
- 判断三角形java代码_java基础编程题之异常处理
以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力.今天的练习的十八题是java的异常处理的使用. 1.检测年龄不能为负数和大于 ...
- javascript编程题_如何开始使用JavaScript进行竞争性编程
javascript编程题 by Priyabrata Biswas 通过Priyabrata Biswas 如何开始使用JavaScript进行竞争性编程 (How to get started w ...
- Java 笔试强训 牛客网选择编程题 01
一.选择 1.单选 1.1.语法: public class Test3{public static void main(String[] args) {System.out.println(100 ...
- 网易2017春招笔试真题编程题集合
网易2017春招笔试真题编程题集合 题目来源:牛客网 https://www.nowcoder.com/profile/7952866/test/7811777/83061 1.双核处理 题目描述 一 ...
- 网易2016游戏技术岗在线编程题(一)
题目来源:牛客网-网易2016年研发工程师编程题. 1.小易的升级之路 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪 ...
- 百度2016研发工程师在线编程题
题目链接:http://www.nowcoder.com/test/question/analytic?tid=1667855 [编程题]罪犯转移 C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入 ...
- 百亿题典之C++编程题面试题
原文地址:百亿题典之C++编程题面试题作者:百亿题典 1. 在linked list中找倒数第N个结点 2. 倒转linked list 3. 二叉树的结点有指向parent的指针,求最近公共祖先 4 ...
- 《C语言程序教程》课后编程题
1.3编程题 1.试参考本章例题编写计算梯形面积的C语言程序,梯形的上底.下底和高分别用a.b.h表示,并用a=10,b=20,h=5测试所编写的程序. #include <stdio.h> ...
最新文章
- FPGA设计思想之“逻辑复制”
- 图像条纹检测 python_【连载4.5】特征检测技术研究面向强反射表面的多传感器三维检测技术研究...
- 移动办公计算机,最适合移动办公的三款掌上电脑点评
- Sesame 2.7.0 发布,Java 的 RDF 开发包
- php输出一条直线,Photoshop脚本 绘制一条线
- javascript promise
- 什么是数据、元数据、主数据?这可能是大多数人没看过的解释
- 人生百态:三件事现出三类人
- desktop docker 无法卸载_docker 安装教程和常见问题
- Android11 如何将系统默认设置中文
- C# ping 局域网扫描
- Web页面引入思源黑体
- python3之http.server模块
- QC1.0、QC2.0、QC3.0、QC4.0协议介绍
- 泰坦尼克号第n遍重温泪点
- C语言 求最大值和最小值
- 数据库连接超时的处理
- Direct Shot Correspondence Matching
- Matlab中sym无法使用
- 计算机图形学的主要研究内容是什么?