第26期:IT培训-领先公司的当前问题和挑战

急在房间里! 复兴IT标题培训。 我们再次收集了在IT公司面试中提出的问题和任务。

图片

每周都会出现问题-敬请期待! 该专栏得到了招聘机构Spice IT的支持

今天,我们面临的任务-复杂程度迥异-从采访到印度公司Flipkart。 好吧,已经通过了社会保障?

问题


1. 小偷,宝藏和两扇门
一个小偷刚刚发现了一对古老的宝藏洞穴。 其中一个山洞里充满了令人难以置信的宝藏,另一个山洞里有一个会呼吸火焰的怪物,它将吞噬打开那个山洞的人。
一个洞穴的黑门饰有钻石,另一个洞穴的棕门饰有蓝宝石。
每扇门的顶部均刻有雕刻说明。 描述说:

黑门:怪物来了。
布朗门(Brown Door):只有一扇门讲真话。

小偷应该打开哪扇门?

笔译
小偷刚刚发现了几个古老的洞穴。 其中一个洞穴充满了令人难以置信的宝藏,另一个则是一个喷火的怪物,它将吞噬打开这个洞穴的任何人。
第一个山洞的入口被一扇镶有钻石的黑色门阻挡,并进入了另一扇-镶有蓝宝石的棕色门。
每扇门的顶部都刻有描述。 详细说明:

黑门:怪物在这里。
棕色门:只有一个门在说实话。

小偷应该打开哪扇门?

2. 找出女儿的年龄
阿洛克有三个女儿。 他的朋友Shyam想知道他女儿的年龄。 Alok给了他第一个提示。
  1. 他们年龄的乘积是72。Shyam说,这还不够,Alok给了他第二个提示。
  2. 他们的年龄之和等于我的房子号码。 Shyam出去看看门牌号码,然后说:“我仍然没有足够的信息来确定年龄”。 Alok承认Shyam无法猜到并给了他第三条提示
  3. 女孩中年龄最大的人喜欢草莓冰淇淋。 Shyam能够在第三个提示后进行猜测。

你能猜出三个女儿的年龄吗?

笔译
阿洛克有三个女儿。 他的朋友Shiyam想知道他女儿的年龄。 Alok给了他第一个提示。
  1. 他们年龄的乘积是72。Shiyam说,这些信息是不够的,然后Alok给了他第二条线索。
  2. 他们的年龄之和等于我家的数目。 Shiyam出来,看着门牌号码说:“我仍然没有足够的信息来确定年龄。” Alok承认Shiyam无法猜测,因此给了他第三条线索。
  3. 女孩中的老大爱草莓冰淇淋。 只有在第三个线索之后,Shiyama才能够猜测他女儿的年龄。

你能猜出三个女儿各有几岁吗?

任务


1. 汤姆和杰里
很长一段时间以来,汤姆和杰里一直在争夺一块奶酪。 因此,最后您来进行救援,并决定战斗结果将由一个数学游戏决定,在该数学游戏中您将写下一个数字N (1 <= N <= 10^6) 。 汤姆和杰里将轮流玩游戏,他们每个人都将减去n [n < N]从而使N % n = 0
游戏被反复轮流重复,直到现在不能再采取进一步行动的那个游戏为止。
游戏从汤姆的第一步开始。 众所周知,它们两个都将以最佳方式进行移动。 您将确定谁赢得了比赛。

输入:每个测试用例的第一行由N个数字组成。
输出:如果Tom获胜,则打印1;如果Jerry获胜,则打印0。

限制条件:
1 <= N <= 10^6

样本:
输入: 2 / 输出: 1
输入: 4 / 输出: 1

笔译
很长一段时间,汤姆和杰里互相争夺一块奶酪。 您决定帮助他们快速确定获胜者。 比赛结果将在数学游戏中确定,您将在上面写下数字N (1 <= N <= 10^6) 。 汤姆和杰里将一次玩一个游戏。 它们每个都会减去数字n [n < N]因此N % n = 0
游戏一直持续到参与者之一可以移动为止。 任何无法采取最后行动的人都会失败。
游戏始于汤姆迈出第一步。 显然,他们两个都将以最佳方式行动。 您必须确定谁赢得了比赛。

输入:每个测试第一行输入均由数字N组成。
程序应输出: 1,如果汤姆赢了; 如果杰里获胜,则为0。 在单独的行中。

局限性:
1 <= N <= 10 ^ 6

例子
输入: 2 / 输出: 1
输入: 4 / 输出: 1

2. N次会议在一间会议室
公司里有一间会议室。 (S[i], F[i])形式的N次会议,其中S [i]是会议i的开始时间,F [i]是会议i的结束时间。
会议室最多可容纳多少个会议?

输入:
输入的第一行包括测试用例的数量。 T测试用例的描述如下:
第一行包含数组的大小,第二行包含包含所有会议的开始时间的数组,每个会议的开始时间均用空格(即S [i])分隔。 第三行包含一个数组,其中包含所有会议的结束时间,每个会议的间隔时间为F [i]。
输出:
在每行中打印会议的顺序,并用空格隔开。

限制条件:
1 ≤ T ≤ 70
1 ≤ N ≤ 100
1 ≤ S[ i ], F[ i ] ≤ 100000


范例:
输入:
2
6
1 3 0 5 8 5
2 4 6 7 9 9
8
75250 50074 43659 8931 11273 27545 50879 77924
112960 114515 81825 93424 54316 35533 73383 160252

输出:
1 2 4 5
6 7 1

笔译
公司有一间会议室。 有N个会议,形式为(S [i], F [i]) ,其中S [i]是会议i的开始时间,F [i]是会议i的结束时间。
任务是在会议室中放置最大数量的会议。

输入数据:
输入的第一行包含测试数量。 测试说明如下:
•第一行包含数组的大小;
•第二行具有一个数组,其中包含所有会议S [i]的开始时间,每个会议之间用空格隔开;
•第三行包含一个数组,其中包含所有会议F [i]的结束时间,每个会议之间用空格分隔。
结论:
在每行中打印会议的顺序,并用空格隔开。

局限性:
1 ≤ T ≤ 70
1 ≤ N ≤ 100
1 ≤ S [i], F [i] ≤ 100000


一个例子:
输入:
2
6
1 3 0 5 8 5
2 4 6 7 9 9
8
75250 50074 43659 8931 11273 27545 50879
77924 112960 114515 81825 93424 54316 35533 73383 160252

输出:
1 2 4 5
6 7 1


3. 数组反转
给定正整数数组。 任务是找到数组的反转计数。
反转计数:对于数组,反转计数指示数组要排序的距离(或距离)。 如果数组以相反顺序排序,则反转计数为最大。
形式上,如果a[i] > a[j]i < j ,则两个元素a [i]和[j]构成一个反转。

输入:输入的第一行包含一个整数T,表示测试用例的数量。 每个测试用例的第一行是N,即数组的大小。 每个测试用例的第二行包含N个元素。
输出:打印数组的反转计数。

限制条件:
1 ≤ T ≤ 100
1 ≤ N ≤ 107
1 ≤ C ≤ 1018


范例:
输入:
1
5
2 4 1 3 5

输出:
3

笔译
给出了自然数数组。 任务是找到数组的求逆数。
反转数:对于数组,反转数指示数组离排序有多远(或多近)。 如果数组已排序,则反转数为0。如果数组以相反顺序排序,则反转数为最大。
形式上,如果a[i] > a[j]i < j ,则两个元素a [i]和[j]构成一个反转。

输入数据:
第一行包含一个整数T,表示测试次数。 每个测试的第一行是N,即数组的大小。 每个测试的第二行包含N个元素。
输出:
打印数组的反转数。

局限性:
1 ≤ T ≤ 100
1 ≤ N ≤ 10 7
1 ≤ C ≤ 10 18


一个例子:
输入:
1
5
2 4 1 3 5

输出:
3


好吧,如所承诺! 许多人都能够回答问题,但是显然要完成任务就更困难了! :)

答案


问题1
答:在黑门处。
解决方案:让我们看一下棕色门上的描述:“只有一个门在说实话。” 可以是对也可以是错。
方案1:棕色门上的描述是正确的。 然后,关于黑门(“怪物在这里”)的描述应该是个谎言。 这意味着带有黑门的山洞中蕴藏着宝藏!
方案2:棕色门上的描述是错误的。 然后,要么两个描述都是错误的,要么都是真实的。 两种描述都不正确,因为这是不可能且不一致的。 这意味着两个描述都是错误的。 再次,黑门中的宝藏。

问题2
答:女儿的年龄:3岁,3岁和8岁。
解决方案: 1)对于初学者,据说年龄的乘积是72。
找到该产品等于72的所有可能选项:
  • 1 * 1 * 72 = 72
  • 1 * 2 * 36 = 72
  • 1 * 3 * 24 = 72
  • 1 * 4 * 18 = 72
  • 1 * 6 * 12 = 72
  • 1 * 8 * 9 = 72
  • 2 * 2 * 18 = 72
  • 2 * 3 * 12 = 72
  • 2 * 4 * 9 = 72
  • 2 * 6 * 6 = 72
  • 3 * 3 * 8 = 72
  • 3 * 4 * 6 = 72

当然,这还不足以给出确切的答案。
接下来,Shiyam查看门牌号(未报告门牌号),但仍然无法给出确切答案。 汇总之前找到的所有选项:
  • 1 + 1 + 72 = 74
  • 1 + 2 + 36 = 39
  • 1 + 3 + 24 = 28
  • 1 + 4 + 18 = 23
  • 1 + 6 + 12 = 19
  • 1 + 8 + 9 = 18
  • 2 + 2 + 18 = 22
  • 2 + 3 + 12 = 17
  • 2 + 4 + 9 = 15
  • 2 + 6 + 6 = 14
  • 3 + 3 + 8 = 14
  • 3 + 4 + 6 = 13

显然,总和之一是门牌号码。 由于Shiyam无法准确回答,因此明确的结论是门牌号为14,因为此结果有两个选择。
  • 2 + 6 + 6 = 14
  • 3 + 3 + 8 = 14

3)从第三个提示可以看出,有一个大女儿(不是几个,而是一个),因此,在第二步中找到的两个选择中,只有一个是合适的。

任务1
洛洛哈耶夫想的对!
答案: (n - 1) % 2
解决方案:
 using System; public class TomJerry { static public void Main () { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.printIn((n - 1) % 2); } } 


任务2
该解决方案使用了贪婪算法。
 #include <bits/stdc++.h> using namespace std; struct Activity { int start, finish, index; }; bool activityCompare(Activity s1, Activity s2) { return s1.finish < s2.finish; } int main() { int t, n, i, j; cin >> t; while (t--) { cin >> n; Activity arr[n]; for (i = 0; i < n; i++) { cin >> arr[i].start; arr[i].index = i; } for (i = 0; i < n; i++) cin >> arr[i].finish; sort(arr, arr + n, activityCompare); i = 0; cout << arr[i].index + 1 << " "; for (int j = 1; j < n; j++) { if (arr[j].start >= arr[i].finish) { cout << arr[j].index + 1 << " "; i = j; } } cout << endl; } return 0; } 


任务3
 #include<iostream> using namespace std; int merge(int* arr, int* LArr, int* RArr, int m, int n) { int i = 0, j = 0, k = 0; int count = 0; while (i < m && j < n) { if (LArr[i] <= RArr[j]) arr[k++] = LArr[i++]; else { arr[k++] = RArr[j++]; count = count + m - i; } } while (i < m) arr[k++] = LArr[i++]; while (j < n) arr[k++] = RArr[j++]; return count; } int mergeSort(int* arr, int start, int end) { if (start > end) return 0; if (start == end) return 0; if (start == end - 1) { if (arr[start] <= arr[end]) return 0; else swap(arr[start], arr[end]); return 1; } int mid = (start + end) / 2; int* LArr = new int[mid + 1]; int* RArr = new int[end - mid]; int i; for (i = start; i <= mid; i++) LArr[i] = arr[i]; for (i = mid + 1; i <= end; i++) RArr[i - (mid + 1)] = arr[i]; int count = 0; count += mergeSort(LArr, 0, mid); count += mergeSort(RArr, 0, end - mid - 1); count += merge(arr, LArr, RArr, mid + 1, end - mid); delete[] LArr; delete[] RArr; return count; } int main() { int t, n,*arr; cin >> t; while (t--) { cin >> n; arr = new int[n]; for (int i = 0; i < n; i++) cin >> arr[i]; cout << mergeSort(arr, 0, n - 1) << endl; } } 

Source: https://habr.com/ru/post/zh-CN477460/


All Articles