华为2016机试题目
2015-09-10 16:49
162 查看
昨天去华为南研机试=。=
故地重游 没啥感慨
题目很简单
第一题
输入一个字符串,输出其中字母、数字、空格、其他字符的个数
输入一个字符之后 直接比较就行
边界条件 也就是判断是否为空
核心代码如下
然而这道题 我拿了0分(不要问我为什么 我想静静)
git 传送门
第二题
海边有m只猴子,一堆香蕉,第一只猴子将香蕉分成m堆多1个,扔掉多余的一个香蕉,并拿走一堆之后换第二只猴子
第二只猴子把剩余的香蕉分成m堆多一个,扔掉一个拿走一堆,换第三只、以此类推换第四只、第五只、第m只
问这堆香蕉开始时最少有几个
/* 3=<m<=9*/
很人性,大于10 之后 需要使用大数
先做一个很简单的推导 从后往前推
所以只要满足 (m-1)*f(n)=m*f(n+1)+1 这个规律 就可以从1开始递增求解
递归也好 循环也好随意了
核心代码如下
git传送门
第三题
输入一个字符串,有两个不超过100位的大数 空格分开 取余
大数的操作 ,其实就是字符串的操作,思路也很简单,就是实现细节的问题
我的想法是 对于小数 不断左移(也就是 *10 *100 )
然后 大数-左移之后的小数
如此循环直到大数小于小数
PS 然而 实际实现的时候 我偷懒了 没左移 直接减了 以后有机会补上
git传送门
故地重游 没啥感慨
题目很简单
第一题
输入一个字符串,输出其中字母、数字、空格、其他字符的个数
输入一个字符之后 直接比较就行
边界条件 也就是判断是否为空
核心代码如下
void countNumber(char* str, int& numOfLetter, int& numOfNumber, int& numOfSpace, int& numberOfOther) { if (str == NULL) return; int len = strlen(str); for (int i = 0; i < len; i++) { if (str[i] >= 0 && str[i] < 256) { if (str[i]>= 'a' && str[i] <= 'z') numOfLetter++; else if (str[i] >= 'A' && str[i] <= 'Z') numOfLetter++; else if (str[i] >= '0' && str[i] <= '9') numOfNumber++; else if (str[i] == ' ') numOfSpace++; else numberOfOther++; } } }
然而这道题 我拿了0分(不要问我为什么 我想静静)
git 传送门
第二题
海边有m只猴子,一堆香蕉,第一只猴子将香蕉分成m堆多1个,扔掉多余的一个香蕉,并拿走一堆之后换第二只猴子
第二只猴子把剩余的香蕉分成m堆多一个,扔掉一个拿走一堆,换第三只、以此类推换第四只、第五只、第m只
问这堆香蕉开始时最少有几个
/* 3=<m<=9*/
很人性,大于10 之后 需要使用大数
先做一个很简单的推导 从后往前推
猴子编号 | 起始数量 | 剩余数量 |
1 | m*f1+1 | (m-1)*f1 |
2 | m*f2+1 | (m-1)*f2 |
3 | m*f3+1 | (m-1)*f3 |
4 | m*f4+1 | (m-1)*f4 |
递归也好 循环也好随意了
核心代码如下
int banana(int m, int min) { bool flag = true; int rest = m * min + 1; for (int i = m; i >1; i--) { if (0 == (rest % (m - 1)) ) rest = (rest / (m - 1))*m + 1; else { flag = false; break; } } if (flag == false) return banana(m, min + 1); else return rest; }PS:这道题 应该还有更快的方法 如果有朋友想到 欢迎大家一起探讨
git传送门
第三题
输入一个字符串,有两个不超过100位的大数 空格分开 取余
大数的操作 ,其实就是字符串的操作,思路也很简单,就是实现细节的问题
我的想法是 对于小数 不断左移(也就是 *10 *100 )
然后 大数-左移之后的小数
如此循环直到大数小于小数
PS 然而 实际实现的时候 我偷懒了 没左移 直接减了 以后有机会补上
git传送门
相关文章推荐
- 迅为4412开发板编写简单应用调用驱动
- Chapter 4 Syntax Analysis
- Linux多线程(转)
- JS浏览器类型推断方法
- MSSQL 数据库日志爆涨
- Java图形化绘制
- HDOJ 1686 Oulipo
- 内网外网同时上网的配置
- 多线程GCD初级讲解,队列与同步异步区别
- 求二叉树的深度
- UVA - 1395 Slim Span(最小生成树最大边权和最小边权之差最小)
- 最好的单例模式
- 解决CL.exe退出,以及error LNK1104关于opencv_calib3d*.lib问题
- 抽象类与接口的区别
- java 读取src目录下的配置文件
- 转载:天涯——散文天下——《关于年轻的流氓无产者的话题》——作者:南方孤驴
- 如何限制对象只能建立在堆上或者栈上
- rCS启动脚本分析
- Kahan's Summation Formula原理—它是如何处理大数吃小数的
- 一个rails项目连多个mongo数据库