京东2019暑期实习生在线笔试(原创)

第一题:

题目描述:现有红绿两种颜色的石头,现在我们需要用这两种石头搭建一个塔,塔需要满足如下三个条件:1,第一层应该包含1块石头,第二层应该包含两块,第i块需要包含i块石头;2,同一层的石头应该是同一个颜色(红或绿);3,塔的层数尽可能多。问在满足上述三个条件的前提下,有多少种不同的建造塔的方案,当塔中任意一个对应位置的石头颜色不同,我们就认为这两个方案不相同。石头可以不用完。

输入:输入仅包含两个正整数,分别表示红和绿砖块的数量a,b(0<=a,b<=2*10**5,a+b>=1)输出:输出和仅包含一个正整数,表示不同的方案数对10**7取模的结果。
输入样例1:4 6输出样例1:2

输入样例2:20 122输出样例2:192

处理程序:缺点:时间复杂度高、空间复杂度高。需要后续进行优化
 1 # *** 辅助函数 *** #
 2 def select_index(COUNTER, i, num):
 3     line0 = list(range(1, COUNTER + 1))
 4     line1 = list(combinations(line0, i))
 5     line2 = []
 6     for j in line1:
 7         data = [x for x in j]
 8         if sum(data) == num:
 9             line2.append(data)
10     return line2
11
12
13 def select_sub(line0, DIF):
14     for i in range(1, len(line0) + 1):
15         line1 = list(combinations(line0, i))
16         line2 = []
17         for j in line1:
18             data = [x for x in j]
19             if sum(data) <= DIF:
20                 line2.append(data)
21         return line2
22
23
24 # *** 数据输入 *** #
25 d0 = list(map(int, input().split()))
26 MIN, MAX, SUM = min(d0), max(d0), sum(d0)
27 COUNTER, SUM_TOWER = 0, 0
28 while True:
29     COUNTER += 1
30     SUM_TOWER += COUNTER
31     if SUM_TOWER > SUM:
32         SUM_TOWER -= COUNTER
33         COUNTER -= 1
34         break
35 DIF = SUM - SUM_TOWER
36
37 # *** 数据处理 *** #
38 d1 = []  # 最小个数的个数
39 for i in range(1, COUNTER + 1):
40     d_mid = select_index(COUNTER, i, MIN)
41     d1.extend(d_mid)
42 # print(d1)
43
44 d2 = []
45 for line0 in d1:
46     d_mid = select_sub(line0, DIF)
47     d2.extend(d_mid)
48 # print(d2)
49
50 # *** 数据输出 *** #
51 if MIN == 0 and MAX == 0:
52     print(0)
53 elif MIN == 0 and MAX > 0:
54     print(1)
55 else:
56     print((len(d1) + len(d2)) % 10**7)

第二题:

题目描述:拉齐有01序列,他可以对这个序列进行任意多次变换,每次变换都是把序列的最后若干个元素放到最前面,例如:01001,将最后3个元素011放到最前面,序列变为011010。所有变换结束后,拉齐需要挑选出一个全为1的连续区间,要求最大化区间长度。

输入:共一行,一个01串,仅包含0或1.序列长度不超过50000。输出:一个整数,表示最长区间的长度。
输入样例1:11011输出样例1:4

输入样例2:11111输出样例2:5

输入样例3:000000000000输出样例3:0

输入样例4:1输出样例4:1

输入样例5:0输出样例5:0
 1 while True:
 2     try:
 3         LIST = input()
 4         if ‘0‘ in LIST:
 5             index_ones = LIST.index(‘0‘)
 6             index_now = index_ones
 7             max = index_now
 8
 9             while True:
10                 if ‘1‘ not in LIST[index_now:]:
11                     break
12
13                 index_start = LIST[index_now:].index(‘1‘)
14                 index_now += index_start
15
16                 if ‘0‘ not in LIST[index_now:]:     # 后面全部是1并且结尾
17                     if max < (index_ones + len(LIST) - index_now):
18                         max = (index_ones + len(LIST) - index_now)
19                     break
20
21                 index_end = LIST[index_now:].index(‘0‘)
22                 index_now += index_end
23                 if max < index_end:
24                     max = index_end
25
26             print(max)
27
28         else:
29             print(len(LIST))
30
31     except:
32         break

原文地址:https://www.cnblogs.com/Mufasa/p/10706803.html

时间: 2024-10-09 12:15:29

京东2019暑期实习生在线笔试(原创)的相关文章

字节跳动 2019 春季算法实习生在线笔试

1. 题目一 求最少收到多少硬币,即优先用大面额的硬币找零,类似于求一个数的个位十位百位. #include <iostream> #include <stdio.h> using namespace std; int main() { int n; scanf("%d", &n); int change = 1024 - n; int a = change / 64; int b = (change - a * 64) / 16; int c = (c

2015阿里巴巴前端实习生在线笔试考后总结

写在前面 还是太年轻,第一次在线笔试有些紧张了 一.2015题目 我遇到的题目:6个选择其中3个多选,1个填空,6个大题.客服姐姐说题目是随机给的(因为给了一个时段考试,而不是统一时间点开考),不过题型应该是固定的. 单选:一个数组,两个引用,相互赋值,问输出 眩晕抗性-30% 单选:问一个return匿名函数的函数的执行结果,内部还有apply 眩晕抗性再-69% 单选:问字符串替换结果是什么,当然,又是套了几层,绕了几圈 眩晕抗性再-1%,嗯,做完这道给彻底绕晕了 多选:移动端,如果A按钮上

拼多多 2019 春季算法实习生在线笔试

1. 题目一 给出两个数组,求两个数组对应元素乘积的最小值. 先对两个数组排序,然后用第一个数组的最大值和第二个数组的最小值相乘,依次遍历即可. ?#include <iostream> #include <stdio.h> #include <vector> #include <algorithm> using namespace std; bool ascend(int i, int j) {return (i < j);} bool descen

2016届阿里实习生在线笔试附加题3

#include<iostream> using namespace std; int a[1000]; int waiting = 1; int main(){ int temp = 0; int i = 0; while(cin>>temp){ a[temp] = 1; if(temp == waiting){ cout<<waiting; for(i = waiting + 1;a[i] == 1;i++){ cout<<","&l

实习生在线笔试问题整理

1.下列CSS3新特性在移动端兼容性较好,我们可以在工作中使用的是? A.position:sticky;作用是让一个区块在窗口中保持可见,当区块没有超出浏览器范围时,作用相当于position:relative;当超出l可视窗口时,作用相当于position:fixed;缺点是兼容性不行,谷歌都不支持了. B.字体大小或尺寸单位使用:以前只用px来做字体大小或尺寸单位,现在用em,是一个相对单位,可以随着浏览器可视窗口的改变而改变,所以是正确答案. C.CSS.supports() API;兼

2014阿里巴巴WEB前端实习生在线笔试题

2014年3月31日晚,我怀着略微忐忑的心情(第一次在线笔试^_^!!)进行了笔试,阿里巴巴的笔试题共有10道,几乎包含了Web前端开发的各个方面,有程序题.有叙述题,时间非常紧张,只完成了大概6道题.下面把遇到的题目跟大家分享一下! 1. <pre name="code" class="html"><!doctype html> <html> <head> <style type="text/css&

2015阿里巴巴前端实习生在线笔试题

Summary 大公司开始招实习生了,我也变成过来人了,品味到之前的酸甜苦辣,除了加油好像也没法说那么多. 因为是你在奋斗,心态这件事是你们在掌握的.但是我们唯一能提供的是我们topview实验室新鲜出炉的面经和笔试. (其实我在想有没应届生春招 - -!) Where 2015阿里巴巴前端实习生在线笔试题

2015腾讯暑期实习生 Web前端开发 面试经历

[2015腾讯暑期实习生 Web前端开发 面试经历] 好吧,首先声明,我被刷了,应该是跪在二面 微信查到的面试状态一直呈现复试中 .. 整整四天了.. 看来是没希望了 不过也是一次经历,记录一下还是可以的 .. 零.TST内推 TST还是有必要提一下,早早就随大家把简历交上去内推了 很多人都有评级了,各种评级都有 但我 从头到尾都查不到评级..是漏了..还是简历太渣看不上... 还是怎么回事..衰.. 一.笔试 笔试是在3月29号在华工考的,腾讯的笔试一直都那么回事,技术岗的都同样一份试题. 试

2017百度web前端实习生在线笔试题

代码: 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 int n = sc.nextInt(); 7 int num[]=new int[n];//用户输入的数组 8 int b[]=new int[n];//复制num 9 int c[]=new int[n];//依次保