2017.8.27 阿里巴巴算法工程师笔试(2)
来源:互联网 发布:ubuntu键盘左alt没反应 编辑:程序博客网 时间:2024/05/16 10:16
题目
菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(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个格子编号是多少?
要求
输入:
货物的序号K,是一个整数
输出:
货物的编码
输入范例:
10
输出范例:
4
分析
注意: 每一排放入自己所有的编号,例如‘10’表示两个编号,所以要将整数10拆成1和0两个字符串
代码
#include <vector>#include <climits>#include <cstdio>#include <string>#include <iostream>#include <algorithm>#include <map>#include <iomanip>using namespace std;int findNthDigit(int n) { long long int a = 9; long long int k = 1; long long int dd = 1; while (n>a*k) { n -= a*k; a = a * 10; k++; dd = dd * 10; } int m = (n - 1) / k; int ll = k - (n - 1) % k - 1; int now = dd + m; while (ll--) { now = now / 10; } return now % 10;}int f(int a) { int ji = 0; while (a) { a = a / 10; ji++; } return ji;}int main() { int k; cin >> k; int a = 1; int tmp = 1; int res = 0; while (a < k) { res += a; k = k - a; tmp++; a = a + f(tmp); } cout << findNthDigit(k); //cout << tmp1 <<" "<< tmp2 << " "<<tmp3 << endl; system("pause"); return 0;}
阅读全文
1 0
- 2017.8.27 阿里巴巴算法工程师笔试(2)
- 阿里巴巴20121009 研发/算法工程师 笔试试题
- 阿里巴巴 算法、数据工程师笔试题选解
- 阿里巴巴算法、数据工程师笔试题选解
- 阿里巴巴算法、数据工程师笔试题选解
- 2013 阿里巴巴算法、数据工程师笔试题选解
- 阿里巴巴2015算法工程师实习生笔试卷
- 阿里巴巴 算法、数据工程师笔试题选解
- 阿里巴巴 历年笔试题 算法工程师
- 阿里巴巴2015算法工程师实习生笔试卷
- 阿里巴巴20121009 研发/算法工程师 笔试试题【修正】
- 2012年阿里巴巴笔试 西安站 研发/算法工程师
- 阿里巴巴2015算法工程师实习生笔试卷错误题目解析
- 阿里巴巴2017实习生招聘笔试题(算法工程师)
- 阿里巴巴2015算法工程师实习生笔试卷解题分析
- 笔试面试(2)阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
- 阿里巴巴实习生笔试研发工程师
- 牛客网(阿里巴巴2010搜索研发C++工程师笔试卷)
- C/C++中的预定义宏
- gcc编译与gdb调试
- PopUpWindow使用详解(一)——基本使用
- hdu 1542 扫描线+线段树
- Spark性能优化之数据倾斜技术方案
- 2017.8.27 阿里巴巴算法工程师笔试(2)
- Unity3d
- C++之数组名和指针的区别---补充(10)《Effective C++》
- PopUpWindow使用详解(二)——进阶及答疑
- 2017暑假第二阶段第六场 总结
- Nginx多Server反向代理配置
- 提升方法AdaBoost
- Oracle学习笔记(二) 数据库卸载
- [NOIP模拟赛]虫图