splunk公司的一道笔试题
题目要求:
一个游泳馆里有很多储物柜,每个储物柜都有一个ID号,但是老板不喜欢4这个数字,所以ID号里都不能有4,ID号从1开始编号,让你设计所有储物柜的ID号,用程序输出,比如
输入 4
输出 5
输入 5
输出 6
输入 14
输出 16
如果题目看不懂,看下这张数据对应表:
输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
输出:1 2 3 5 6 7 8 9 10 11 12 13 15 16 17
也就是根据输入的序号,求出实际的序号,实际的序号是去除掉含有4的数字
类似很多大厂的题目,初看简单,几乎每个人多少都能写点,但仔细一想,要写出高效、简洁的代码并不简单。按照常规思路,实现如下(效率较低)
1 #include "stdafx.h"
2 #include <iostream>
3 using namespace std;
4
5 bool include4(int n)
6 {
7 while (n)
8 {
9 if ((n%10) == 4)
10 return true;
11 n /=10;
12 }
13
14 return false;
15 }
16
17 int GetNumber(int n)
18 {
19 if (n < 0)
20 return 0;
21
22 int pos = 0;
23
24 while (n--)
25 while (include4(++pos));
26
27 return pos;
28 }
29
30 int _tmain(int argc, _TCHAR* argv[])
31 {
32 for (int i = 0; i < 100; ++i)
33 {
34 cout << i << ":" << GetNumber(i) << endl;
35 }
36 return 0;
37 }
转换下思路,考虑去掉4,等效于从10个数里拿走一个数,剩余9个数,所以新的数据模式可认为是9进1。
十进制情况下,我们要想表达一个数,m = n*10 + a; //n为除数; a为余数,取值范围为(0~9)
同理,“9进制”情况下m = n*9 + a; //n为除数;a为余数,取值范围为(0,1,2,3,5,6,7,8,9)
代码如下:
1 int GetNumber(int n)
2 {
3 if (n < 0)
4 {
5 return 0;
6 }
7
8 int symbols[] = { 0, 1, 2, 3, 5, 6, 7, 8, 9 };
9 int count = sizeof(symbols)/sizeof(symbols[0]);
10 return n <= count ? symbols[n] : GetNumber(n / count) * 10 + GetNumber(n % count);
11 }
splunk公司的一道笔试题的更多相关文章
- Java中有关构造函数的一道笔试题解析
Java中有关构造函数的一道笔试题解析 1.详细题目例如以下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与c ...
- 一道笔试题来理顺Java中的值传递和引用传递
题目如下: private static void change(StringBuffer str11, StringBuffer str12) { str12 = str11; str11 = ...
- 某公司的U3D笔试题
某公司的U3D笔试题 今天这套笔试题感觉做得一般. 随后是二对一的技术面试,但涉及的技术细节相对较少,更多的是对以前工作.项目经历的询问. 然后说今天先到这里,让我等通知. 我还特意问了一下,通知 ...
- 一道笔试题和UML思想 ~
一句软件工程界的名言,让我想起了一个和一道笔试题有关的故事.希望更多的人了解 UML 背后的思想比他的语法更重要,是笔者写作本文的一点小愿望. 一.从一句软件工程名言说起 对很多事情的处理上,东西方都 ...
- 所在实习公司的JS笔试题
在班上无聊的时候看到了一份JS笔试题(我是电面进去的,没做过这份题~~),开始还觉得蛮简单......后来觉得还是很有意思的,贴出来一起看看. 题目一: if(!("a" in w ...
- 由阿里巴巴一道笔试题看Java静态代码块、静态函数、动态代码块、构造函数等的执行顺序
一.阿里巴巴笔试题: public class Test { public static int k = 0; public static Test t1 = new Test("t1&qu ...
- 转:一道笔试题-将int型数组强制转换为char*,再求strlen,涉及大小端
写出如下程序运行结果: #include<stdio.h> #include<string.h> int main() { int a[2000]; char *p = (ch ...
- golang 中 string 转换 []byte 的一道笔试题
背景 去面试的时候遇到一道和 string 相关的题目,记录一下用到的知识点.题目如下: s:="123" ps:=&s b:=[]byte(s) pb:=&b s ...
- 通过一道笔试题浅谈javascript中的promise对象
因为前几天做了一个promise对象捕获错误的面试题目,所以这几天又重温了一下promise对象.现在借这道题来分享下一些很基础的知识点. 下面是一个面试题目,三个promise对象捕获错误的例子,返 ...
随机推荐
- vmware 虚拟机共享 windows 目录
1.vmware 配置: 2.虚拟机进行配置: 虚拟机安装vmware-tools 3.虚拟机中挂载sr0(cdrom): [root@bogon ~]# mount /dev/sr0 /mnt/ m ...
- SpringBoot整合Redis并完成工具类
SpringBoot整合Redis的资料很多,但是我只需要整合完成后,可以操作Redis就可以了,所以不需要配合缓存相关的注解使用(如@Cacheable),而且我的系统框架用的日志是log4j,不是 ...
- 计算机网络-应用层(2)FTP协议
文件传输协议(FTP,File Transfer Protocol)是Internet上使用最广泛的文件传送协议.FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限.它屏蔽了 ...
- Java多线程_CAS算法和ABA问题
CAS算法概述CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换.CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B. CAS指令执行时,当且仅当内存地址V ...
- Angular 学习思路
近些年前端框架非常多,主流的有 Vue.React.Angular 等.我参与的项目中使用较多的是 Vue.因为 Vue 学习难度不大,上手很快,代码简洁,而且使用 Vue 全家桶(Vue + Vue ...
- CF1349A Orac and LCM 题解
题意分析 给出$n$个数,求这$n$个数两两的最小公倍数的最大公约数 思路分析 通过分析样例可以发现,如果要成为这$n$个数两两的最小公倍数的公约数,至少要是这$n$个数中$n-1$个数的约数,否则就 ...
- Qt QDialog添加最大化和最小化按钮
Qt QDialog添加最大化和最小化按钮(转载) QDialog窗体右上角默认是没有最小化和最大化按钮的. 1.效果 2.上代码 1 // 设置窗体最大化和最小化 2 Qt::WindowFlags ...
- 招新裁老,两面派互联网大厂,培训三个月,就拿15K,凭什么?
看到一位朋友在发帖子求问:亲身经历,(如有谎言我名字倒过来写)一个大学同学18年毕业的.在兰州一个二本学的兽医农牧,毕业难找工作,去深圳一个机构培训了三个月吧,然后就去做大数据 算法了,然后又去做ja ...
- RabbitMQ配置文件(advanced.config)
这是advanced.config配置文件示例: [ %% ------------------------------------------------ --------------------- ...
- Selenium使用cookis登录,并临时将cookis存储在本地【shelve数据库】
Python中自带了一个shelve库,可以帮助我们存储一些少量的数据. shelve数据库类似redis,是以[键值对]的方式进行数据的存储,有点像"字典"这种数据结构,存储在本 ...