2017京东笔试总结

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

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

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

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

#include <iostream>
#include <vector>

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 <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	int day;
	int unmissDay;
	cin >> day;
	cin >> unmissDay;
	vector<pair<int,int>> 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;
	}
}

  

时间: 2024-08-09 09:31:19

2017京东笔试总结的相关文章

京东笔试(小帆)

2017/04/07 京东笔试一个半小时 包括100分的单选和0分的综合题 哭晕 单选包括行测和专业题 综合题又遇到了共享单车 可见最近这个是有多火 问题:1.单车破损严重,针对这个问题,从设计或者运营角度,来解决 2.共享单车的"未来"在哪里?

京东笔试-交易清单

题目要求:1.使用c语言实现,不能使用c++的stl容器,map.vector等等2.自己定义数据结构3.如果需要排序,自己写排序算法 股票交易中,高峰期委托买卖数量是十分大的,尤其在9:30分左右,而证券公司关心的抢手的信息条数会远小于委托买卖数量.实际情况是题目中的n会非常大,而s很小,因此需要考虑算法的时间复杂度. 题目如下:京东笔试-交易清单(京东2016实习生真题)题目描述金融证券行业超好的薪酬待遇,吸引了大批的求职者前往应聘,小东也不例外,准备应聘一家证券公司.面试官为考察她的数据分

[京东2017实习生笔试] 通过考试

时间限制C/C++语言:1000MS其它语言:3000MS 内存限制C/C++语言:65536KB其它语言:589824KB 题目描述 小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试.考试结束后,小明估算出每题做对的概率,p1,p2,...,pn.你能帮他算出他通过考试的概率吗? 输入 输入第一行一个数n(1<=n<=100),表示题目的个数.第二行n个整数,p1,p2,...,pn.表示小明有pi%的概率做对第i题.(0<=pi<=100)

[京东2017实习生笔试] 终结者C

原题: http://exercise.acmcoder.com/online/online_judge_ques?ques_id=4401&konwledgeId=41 时间限制 C/C++语言:1000MS其它语言:3000MS 内存限制 C/C++语言:65536KB其它语言:589824KB 题目描述 收到情报,有批新造的机器人要运输到前线.小C将去破坏机器人的运输.小C将激光炮放置在公路的一旁,等运输车经过的时候发射(假设激光炮一定可以射穿车辆).由于能源有限,激光炮只能发射两次.可以

算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序

接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public int value; public Node left; public Node right; public Node(int data){ this.value=data; } } 一个数组的MaxTree定义如下: ◆ 数组必须没有重复元素 ◆ MaxTree是一颗二叉树,数组的每一个值对应一

58集团2017校招笔试-前端岗

刚刚做完58的前端岗位在线笔试,趁热打铁,把题目记录下来供需要的小伙伴们参考~~整理完题目先去吃饭啦,暂时不贴答案了,后面会补上的~~ 首先说下整体感觉:挺基础的,不过最后一道编程题个人感觉得有些积累才能~~~不信你往下看~~~ 一.笔试题目 说明:以下题目是考试过程中用笔记录,描述可能跟题目不完全一样,但意思绝对一样. 概览: 1.填空题(30分,10题) 2.简答题(25分,5题) 3.应用题(25分,2题) 4.编程题(20分,1题) 1.填空题(30分,10题) (1)获取随机数的方法:

京东笔试

N个数进栈,出栈序列有多少个?这个问题属于卡特兰数(h(n)=C(2n,n)/(n+1) (n=1,2,3,...))的应用 某系统中有3个并发进程,都需要同类资源4个,试问该系统保证不会发生死锁的最少资源数是______. A.9个B.10个C.4个D.12个3*3+1

Legendary Items-微软2017实习生笔试第一题

题目如下: 这道题难点不仅在于正确理解题意,判断递归条件,更在于用数学方法推出解决公式.因为N最大为1百万,而内存只有256MB, 所以暴力递归肯定会超时,超空间. 不过,我才疏学浅,又没有大量时间去深究,所以只写出了暴力递归算法.进一步优化的话,可以考虑P在迭代很久后会变为0这一事实,也许可以进一步节省时空消耗. 下面给出算法,由于我注释写的很详细,这里就不进一步解释了. 1 import java.util.Scanner; 2 public class Main { 3 4 static

京东笔试---通过考试(DP)

题目描述      小明同学要参加一场考试,考试一共有n道题目,小明必须作对至少60%的题目才能通过考试.考试结束后,小明估算出每题作对的概率,p1,p2,...,pn,你能帮他算出他通过考试的概率吗? 输入 输入第一行一个数n(1<=n<=100),表示题目的个数,第二行n个整数,p1,p2,...,pn,表示小明有pi%的概率作对第i题.(0<=pi<=100) 输出     小明通过考试的概率,最后结果四舍五入,保留小数点后五位. 样例输入 4 50 50 50 50 样例输