博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017京东笔试总结
阅读量:7254 次
发布时间:2019-06-29

本文共 2438 字,大约阅读时间需要 8 分钟。

第一题,给一个数A,求A用2-A-1进制表示的所有数的每一位的总和的平均数。

比如5,则用2进制表示为101;3进制表示为12;4进制表示为11,则所有数的总和为1+0+1+1+2+1+1 = 7

平均数为7/3要求表示成不可约分的形式。

思路比较简单辗转相除的方法,求出每一个进制表示的数各个位的总和,然后除以总的个数,这边最需要注意的一个点就是,最后的结果是要表示成不可约分的形势,因此在输出结果时候,还要除以分子和分母的最大公约数。

#include 
#include
using namespace std;int greatDivisor(int num1, int num2) { if (num1 > num2) { return greatDivisor(num1 - num2, num2); } else if (num2 > num1) { return greatDivisor(num1, num2 - num1); } else return num1;}int main() { int A = 0; while (cin >> A) { long long sum = 0; for (int i = 2; i < A; i++) { int temp = A; while (temp) { sum += temp%i; temp /= i; } } int Commondivisor = greatDivisor(sum, A - 2); cout << sum / Commondivisor << "/" << (A - 2) / Commondivisor << endl; }}

  

第二题:小明有一堆爬上的数据,m和n,m表示第几天,n表示他当天爬的海拔高度,要求是相邻两天的高度差不超过1,并且第一天和最后一天的高度可以是任意输入,他遗失了这份数据中的一部分,问你能不能通过没有遗失的数据求出他可能爬的最高海拔,如果可以输出可能的最高海拔,如果不行,输出“IMPOSSIBLE”;

比如

8 2

2 0

7 0 

上面这组数据表示他一共有8天的数据,没有遗失的数据有2天,分别是第2天海拔0,第7天海拔0,则可以发现,如果高度差不超过1,则第4天或者第5天的海拔最高为2,可能的情况为(2,0)(3,1 )(4,2)(5,2 )(6,1) (7,0)

则按要求输出为2

8 3

2 0

7 0

8 3

对于这组数据,由于第7天和第8天相邻两天高度差超过了1,所以输出IMPOSSIBLE

这道题我没有AC,当时想错了一个地方,其实和第一组测试数据很有关系,由于第一组测试数据刚好2,7都为0,并且最高高度为两天的中间那天,所以我简单的把最高高度换乘了0+(7-2)/2,其实这样是不对的,其实这题真的非常简单初中的知识,画一个图解方程就明白了。

这样最大高度的公式就很容易表示了,还需要考虑第一天和最后一天可能的高度,然后再求出最大值。当时被(2,0) (7,0)这两对数据误导,一直没有AC

当然下面的代码我也不保证能够AC。。。。哈哈哈~等下次题目有了再提交看看,如果有什么问题的话欢迎给我留言。

#include 
#include
#include
using namespace std;int main() { int day; int unmissDay; cin >> day; cin >> unmissDay; vector
> dayInfo(unmissDay); for (int i = 0; i < unmissDay; i++) { int oneday; //日期 int oneheight; //高度 cin >> oneday; cin >> oneheight; dayInfo[i] = make_pair(oneday,oneheight); } int maxheight = 0; bool flag = true; for (int i = 1; i < unmissDay; i++) { if (dayInfo[i].first - dayInfo[i - 1].first < abs(dayInfo[i].second - dayInfo[i - 1].second)) { flag = false; break; } maxheight = max(maxheight, (dayInfo[i - 1].second + abs(dayInfo[i].second - dayInfo[i - 1].second + dayInfo[i].first - dayInfo[i - 1].first) / 2)); } maxheight = max(maxheight, max(dayInfo[0].second + dayInfo[0].first - 1, dayInfo[unmissDay - 1].second + unmissDay - dayInfo[unmissDay - 1].first)); //需要考虑第一天和最后一天的高度 if (flag) { cout << maxheight << endl; } else { cout << "IMPOSSIBLE" << endl; }}

  

转载于:https://www.cnblogs.com/rockwall/p/5845157.html

你可能感兴趣的文章
symbol AP5131重置密码和恢复出厂设置
查看>>
自定义一个jdbc框架
查看>>
yarn上手体验
查看>>
BPMN 2.0规范详解
查看>>
每天学习一个LINUX命令:pwd 显示当前目录(Print-Working-Directory)
查看>>
2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理
查看>>
linux下yum三种搭建方法
查看>>
QTP对日前控件的处理
查看>>
前端技术/前端冷知识集锦
查看>>
RGW Usage类解析
查看>>
模板引擎缓存
查看>>
php 5.6.11添加模块
查看>>
matlab-线性代数 根据二次型写矩阵
查看>>
Win 7 deskhelp
查看>>
Sybase SQL Anywhere 7 数据库修复成功
查看>>
发展到1Gbps及其以上的速度
查看>>
TurboMail为企业提供海量投递邮件群发系统
查看>>
Linux系统命令Cut使用
查看>>
我的友情链接
查看>>
chrome 跨域设置-(完善博客内容)
查看>>