目录

  • 最大公约数
  • 取模方程
  • 走迷宫
  • 听曲子

最大公约数

给定一组正整数,问最少删除几个数,能保证剩下的数(数目大于1)的最大公约数为1。

  • 输入描述
    N,数组的长度,大于1
    a1 a2 a3 … aN,数组元素
  • 输出描述
    最少删除元素的个数
  • 示例
    3
    2 2 4
    -1
    2
    1 2
    0
    解释:[2,2,4]不可能通过删除元素来使得最大公约数为1,所以输出-1;[1,2]本身最大公约数就为1,所以输出0。

数学题,要能分析出一组正整数的最大公约数(GCD)要么为1,要么不为1;不为1的一组数不论怎么样删除,数组元素的GCD都不可能为1。即解题思路就是判断这组数的GCD是否为1,时间复杂度为O(N),N是数组长度。

def gcd(a, b):while b != 0:t = a % ba = bb = treturn aif __name__ == "__main__":N = int(sys.stdin.readline().strip())line = sys.stdin.readline().strip()# 把每一行的数字分隔后转化成int列表datas = list(map(int, line.split()))a = datas[0]for i in range(1, N):b = datas[i]a = gcd(a, b)if a == 1:breakif a == 1:print(0)else:print(-1)

取模方程

给定两个非负整数a和b,问有多少个非负整数x,使a%x=b。
a和b属于[0,10910^9109]

  • 输入描述
    a b
  • 输出描述
    x的个数
  • 示例
    7 3
    1
    15 15
    inf
    解释:7 mod 4 = 3,x只有4这个取值满足要求,所以输出1;x取大于15的数都满足要求,所以有无数个,输出inf。

数学题。根据题意分类讨论可以得到下面的结论:1.当a==b,输出inf;2.当b>a,输出0;当a>b,符合要求的x属于(b,a-b],且是a-b的因子。

if __name__ == "__main__":line = sys.stdin.readline().strip()# 把每一行的数字分隔后转化成int列表values = list(map(int, line.split()))a, b = values[0], values[-1]if a == b:print("inf")elif b > a:print(0)else:max_x = a-bcount = 0factor1 = 1while factor1**2 <= max_x:factor2, remainder = divmod(max_x, factor1)if remainder == 0:if factor1 > b:count += 1if factor2 > b and factor2 != factor1:count += 1factor1 += 1print(count)

走迷宫

有一个N*M大小的迷宫,每一个格子用’.‘或’#‘表示,其中’.‘代表可通行的、’#‘表示是墙,现在问任选一对起始点(起点与终点不能选同一个格子,并且不能选’#’),它们之间的路径长度指的是最短的那条路径。问这些起始点对中最长的路径长度是多少?

  • 输入描述
    N M,N是迷宫的长度,M是迷宫的宽度
    接下来是N行,M列的格子
  • 输出描述
    最长的路径长度
  • 示例
    3 3
    . . .
    . # .
    . . .
    4
    5 5
    . . . # .
    . . . # .
    . # . . .
    # . . . .
    . # . . #
    8
    5 5
    # . . # .
    . . . # .
    . . . . .
    # . # . .
    . . . . #
    8
    解释:这三个迷宫,都是对角的点对的路径长度是最大的。

图论,遍历整个图,每次遍历从每个起点开始BFS,得到这个起点所能到达的最远终点,返回其路径。整个遍历完,得到最大路径。

def bfs(i, j):from collections import dequedirections = {(-1, 0), (1, 0), (0, -1), (0, 1)}visited = set()q = deque()q.append((i, j))visited.add((i, j))path = -1while q:path += 1num = len(q)for k in range(num):x, y = q.popleft()for direction in directions:adj_x, adj_y = x+direction[0], y+direction[-1]if 0 <= adj_x < N and 0 <= adj_y < M and graph[adj_x][adj_y] == '.' and (adj_x, adj_y) not in visited:q.append((adj_x, adj_y))visited.add((adj_x, adj_y))return pathif __name__ == "__main__":line = sys.stdin.readline().strip()values = list(map(int, line.split()))N, M = values[0], values[-1]graph = []for i in range(N):data = sys.stdin.readline().strip().split()graph.append(data)res = 0for i in range(N):for j in range(M):if graph[i][j] == '.':max_path = bfs(i, j)res = max(res, max_path)print(res)

听曲子

4名室友听歌,每个人有自己的n首歌可选,每首歌有其播放时间。每个人从自己的n首歌中选歌,至少选一首,最多N首,问4个人中的最长的播放总长与最短的播放总长相差最小是多少?

  • 输入描述
    N,曲子数
    接下来4行N列
  • 输出描述
    最小的最长的播放总长与最短的播放总长的差
  • 示例
    3
    240 300 360
    600 200 200
    300 400 500
    600 600 600
    100
    解释:所选方案为240+360/600/500/600,所以输出为600-500=100

暴力解法就是列出每个人的可选方案,然后计算出结果,这样的时间复杂度为O(4∗2n)O(4*2^n)O(4∗2n),加上剪枝,可以过。。。

def gen_solution(data, tmp, idx):solution.add(tmp)if idx < len(data):gen_solution(data, tmp+data[idx], idx+1)gen_solution(data, tmp, idx+1)if __name__ == "__main__":N = int(sys.stdin.readline().strip())solutions = []for i in range(4):line = sys.stdin.readline()data = list(map(int, line.split()))solution = set()gen_solution(data, 0, 0)solution.remove(0)solutions.append(solution)res = sys.maxsizefor i0 in solutions[0]:for i1 in solutions[1]:if abs(i0-i1) >= res:continuefor i2 in solutions[2]:if abs(i0-i2) >= res or abs(i1-i2) >= res:continuefor i3 in solutions[3]:res = min(res, max(i0, i1, i2, i3)-min(i0, i1, i2, i3))print(res)

2020.8.11贝壳找房笔试复盘相关推荐

  1. 一枚渣渣的贝壳找房笔试惨痛经历

    选择题 1.平衡二叉树 2.取字串 3.哈希表的平均查找长度 4.Dijkstra算法和Prim算法是什么,空间复杂度和时间复杂度 5.磁道,SCAN算法 6.MySQL存储的优点 7.delete ...

  2. 互联网日报 | 贝壳找房更新IPO招股书;云闪付App用户数突破3亿;宝马近11年来首次季度亏损...

    今日看点 ✦ 贝壳找房更新招股书:将IPO发行价格区间设定为17-19美元 ✦ 支付宝:已联合商家.银行发消费券超100亿,小店流水增长70% ✦ 银联云闪付APP用户数突破3亿,20多家银行400余 ...

  3. 互联网晚报 | 05月11日 星期三 | 贝壳找房启动新一轮裁员;苹果宣布停产iPod touch;朴新教育否认“宣布破产”...

    知网称正在反思,将择机向社会公开整改措施 5月9日,同方股份针对投资者留言回应称:知网在进行反思,并研究进行经营模式优化改善,积极进行整改.知网会将相关整改措施择机向社会公开.同方知网(北京)技术有限 ...

  4. 贝壳找房的2021,依然充满变数

    配图来自Canva可画 2021年的贝壳找房充满变数,先是被指垄断,而后又失去了精神支柱一般的创始人左晖.在接二连三的打击中,贝壳发布了2021年上半年及第二季度财报,毫不意外贝壳找房业绩整体表现差强 ...

  5. 贝壳找房上海研发全员被优化,公司回应来了!

    整理 | 王晓曼 出品 | 程序人生 (ID:coder _life) 10月11日,不少网友在某社交平台上爆料称,贝壳找房上海研发全员被优化,裁员补偿为"N+3". 贝壳找房回应 ...

  6. Python爬虫 | 爬取贝壳找房8万+二手房源,看看普通人在北京买房是有多难!

    文章目录 1.概述 2.数据采集 3.数据清洗 3.1.读取数据 3.2.去掉车位(地下室)数据 3.3.房源信息解析 4.数据处理及可视化 4.1.各地区二手房源数 4.2.各地区二手房均价 4.3 ...

  7. 贝壳找房值百亿美元吗?

    来源:燃财经(ID:rancaijing) | 作者:唐亚华 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博 ...

  8. 安居客冲刺上市:姚劲波全力支持,距离贝壳找房还差6个我爱我家

    4月8日,港交所披露的文件显示,安居客集团(下称安居客)向港交所主板递交上市申请.在此之前,我爱我家.房天下(搜房网).贝壳找房(链家)均已实现上市,而麦田房产暂无动作. 据了解,安居客成立于2007 ...

  9. 现代汽车、欧莱雅、贝壳找房、信达生物、诺维信等公司高管变动

    一周企业高管变动要闻. 全球 韩国现代汽车集团(Hyundai Motor Group)首席副会长郑义宣14日升任集团新一任会长,作为现代集团的第三代继承人正式接班.这是现代汽车集团时隔20年正式换帅 ...

最新文章

  1. 2020年总结以及21年规划
  2. 嵌入式处理器分类现状
  3. python元组 字符串 字典 习题+总结
  4. css怎么居中字体,用CSS做将如何字体居中?
  5. 计算机不能代替人类英语作文,2013年雅思写作范文:电脑翻译能取代人吗?
  6. android hook 模拟点击_手把手讲解 Android Hook-实现无清单启动Activity
  7. 帝国cms+php7.0+mysql_帝国cms切换php7.x登录后台空白解决方法
  8. redhat5.4上安装oracle9i
  9. STM32固件库下载教程
  10. Java 实现同步的几种方式
  11. 山东大学高频电子线路综合实验 调幅通信机系统实验详解
  12. jq ui.dialog.js简介
  13. 二叉排序树和二叉平衡树
  14. 获取pm2.5空气质量AQI历史数据
  15. DevOps原则,听伍道长细细道来
  16. win10下Linux双系统
  17. 利用matlab来设计FIR滤波器参数
  18. get_post X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
  19. 搭建Linux内核代码浏览工具LXR
  20. Android 高仿微信朋友圈动态, 支持双击手势放大并滑动查看图片。

热门文章

  1. oracle 查看PACKAGE里的函数代码
  2. python群发邮件 to单独指定_python:如何发送邮件与TO,CC和BCC?
  3. iframe如何刷新的三种实现方案
  4. 英语语法最终珍藏版笔记-2关于动词时态的几点说明
  5. 网络基础(三)物理层功能,Hub的工作原理
  6. 计算机组成流水灯原理,计算机组成原理课程设计(微程序设计)
  7. HTML XHTML CS3 JS网页制作(IT培训网站设计+当当网首页设计)
  8. 5G——万物互联新时代
  9. 大数据在各个行业中的具体作用
  10. 2021年全球切削刀具市场销售额达到了244.5亿美元,预计2028年将达到321亿美元