system verilog编程题_拼多多2020校招部分算法编程题合集
拼多多2020校招部分算法编程题2道,多多的魔术盒子和多多的排列函数
其实根据他的匹配职位我们可以看到,这5道题的难度还是并不高,只是作为一个初步筛选,我这边选择了前两道跟大家分享
[编程题一] 多多的魔术盒子:
多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。
那么请问聪明的你,是否已经知道了应该如何操作呢?
输入描述:
第一行,有1个整数T,表示测试用例的组数。(1 <= T <= 100)接下来T行,每行1个整数N,表示有N个魔术盒子。(1 <= N <= 1,000,000,000)
输出描述:
共T行,每行1个整数,表示要将所有盒子的球变没,最少需要进行多少次操作。
输入例子1:
3125
输出例子1:
123
详细题解:
#牛人的Python代码:思路就是将 数字转二进制,位数就是结果,真的是牛人,太秀了n = int(input())for i in range(n): x = int(input()) print(len(bin(x))-2)#常规解法一(JAVA):求最少的次数把所有盒子减到0,那么第一次减少的球为中间盒子数量即可,分治求解 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); for (int i = 0; i < num; i++) { int value = scanner.nextInt(); System.out.println(work(value)); } } private static int work(int i) { int time = 1; while (i != 1){ i = i/2; time++; } return time; }#常规解法二(C/C++):也可找通过找规律求解。#比如2、3个盒子需要2次,4、5、6、7个盒子需要3次,则n个盒子需要(logn)下取整+1次#include#include#define N 100int main(){ int time; int a[N]; int d[N]; scanf("%d",&time); for(int i=0;i
[编程题二] 多多的排列函数:
数列 {An} 为N的一种排列。
例如N=3,可能的排列共6种:
1, 2, 3
1, 3, 2
2, 1, 3
2, 3, 1
3, 1, 2
3, 2, 1
定义函数F:
其中|X|表示X的绝对值。
现在多多鸡想知道,在所有可能的数列 {An} 中,F(N)的最小值和最大值分别是多少。
输入描述:
第一行输入1个整数T,表示测试用例的组数。( 1 <= T <= 10 )第二行开始,共T行,每行包含1个整数N,表示数列 {An} 的元素个数。( 1 <= N <= 100,000 )
输出描述:
共T行,每行2个整数,分别表示F(N)最小值和最大值
输入例子1:
223
输出例子1:
1 10 2
例子说明1:
对于N=3:- 当{An}为3,2,1时可以得到F(N)的最小值0- 当{An}为2,1,3时可以得到F(N)的最大值2
题目详解:
题目没什么难度,主要就是要理解题目。只要明白在{An}的所有排列中,能够让F(N)取得的最大最小值为多少。
比如每四个数 5,6,7,8,我们把它们两两一组 |||8-6|-7|-5|=0,最小值是0;猜测最小值的变化也是4个一组
看到min只有2种取值。0,1,最大值自然就是N-getmin(N-1)
#JAVA题解import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner s=new Scanner(System.in); int count=s.nextInt(); for(int i=0;iusing namespace std;pair p[110000];int main(){ int t; cin >> t; for (int i = 1, f = 0; i <= 100000; i++, f = (f + 1) % 4) { if (f == 0 || f == 1) p[i].first = 1; else p[i].first = 0; if (f == 0 || f == 3) p[i].second = i; else if (f == 1|| f == 2 ) p[i].second = i - 1; } while (t--) { int n; cin>>n; cout<
总结
大厂的面试注重算法思想,有的时候你虽然不能够在规定的时间内将其编码完成,但是只要思路能够跟面试官讲清楚,也是有很大机会过的。
学习注重积累,若有不详尽之处,尽可探讨。
system verilog编程题_拼多多2020校招部分算法编程题合集相关推荐
- 拼多多2020校招部分编程题
文章目录 拼多多2020校招部分编程题 多多的排列函数 canci 拼多多2020校招部分编程题 #include <iostream> using namespace std; int ...
- 多多的魔术盒子(拼多多2020校招部分编程题合集之第一题)
多多鸡有N个魔术盒子(编号1-N),其中编号为i的盒子里有i个球. 多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个. 通过观 ...
- python 拼多多_python 拼多多_拼多多2018校招编程题汇总 Python实现
列表补全 在商城的某个位置有一个商品列表,该列表是由L1.L2两个子列表拼接而成.当用户浏览并翻页时,需要从列表L1.L2中获取商品进行展示.展示规则如下: 用户可以进行多次翻页,用offset表示用 ...
- python 拼多多_拼多多2018校招编程题汇总 Python实现
列表补全 在商城的某个位置有一个商品列表,该列表是由L1.L2两个子列表拼接而成.当用户浏览并翻页时,需要从列表L1.L2中获取商品进行展示.展示规则如下: 用户可以进行多次翻页,用offset表示用 ...
- 拼多多2018校招内推编程题汇总 详解
编程 一.最大乘积 描述: 给定一个无序数组,包含正数.负数和 000,要求从中找出 333 个数的乘积,使得乘积最大,要求时间复杂度:O(n)O(n)O(n),空间复杂度:$O(1) $ 输入描述: ...
- 拼多多2018校招内推编程-大整数相乘
编程题] 大整数相乘 时间限制:1秒 空间限制:32768K 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示.不能用系统自带的大整数类型. 输入描述: 空格分隔的两个字符串,代表 ...
- 拼多多 2020校招 多多的排列函数(找规律 构造)
数列 {An} 为N的一种排列. 例如N=3,可能的排列共6种: 1 2 3 4 5 6 1, 2, 3 1, 3, 2 2, 1, 3 2, 3, 1 3, 1, 2 3, 2, 1 定义函数F: ...
- 拼多多2020学霸批数据分析师笔试 —— SQL整理(2019.7.28)
半个月过去,终于安装好Mysql,可以开始实操.解决和总结「拼多多学霸批」的SQL题了.真题还是非常珍贵的,难得和业务需求结合在一起. 加之这周,了解了「窗口函数」,比半个月前的我,又有多一点不一样的 ...
- 拼多多2020学霸批数据分析师笔试题 (2019.7.28)
真真正正20届秋招,第一场笔试献给了「拼多多」. 套题 20届学霸批数据分析师笔试题 题型简单粗暴 5道问答题:3 * SQL + 1 * 概率计算 + 1 * 业务分析题 完成时间 90分钟 会写的 ...
最新文章
- 鸿蒙IPC摄像机,华为鸿蒙OS来了,海雀AI全景摄像头助力万物互联
- 一种向后兼容的C++结构体设计
- 数据库学习建议之提高数据库速度的十条建议
- websoc是什么可以卸载吗_购房诚意金是什么意思?可以退吗?
- [Web Chart系列之五] 2. 实战draw2d 之Label 放大,缩小的问题(raphael的text类似问题)
- 华为方舟编译器开源!前华为人重磅解读!
- 多项目加载顺序修改_面试官:Java 类在 Tomcat 中是如何加载的?
- 关于CUDA中cutil的一些问题
- 经典排序算法(六)--归并排序Merge Sort
- 稳压二极管 参数说明
- java时间轮定时器_算法 数据结构——时间轮定时器
- C4D学习笔记1-动画-动画关键帧
- cocoscreator 接入 taptap 登录 防沉迷 实名认证
- 13年草根程序员转型之路
- VueDemo-12.加入购物车
- 网络游戏是怎样登录的?
- DB2活动日志满的原因、分析、处理与避免
- 喜欢听音乐的小伙伴看过来
- stl如果开o2_Flow-3D地形模型处理
- 5G室内覆盖面临四大挑战,如何破?