Dringend im Zimmer! Wiederbelebung der Ăśberschrift IT-Training. Wir haben die Fragen und Aufgaben, die bei Interviews in IT-Unternehmen gestellt wurden, erneut gesammelt.

Ausgaben erscheinen jede Woche - bleiben Sie dran! Die Kolumne wird von der Personalvermittlungsagentur
Spice IT unterstĂĽtzt .
Heute haben wir Aufgaben unterschiedlichster Komplexität - von Interviews bis zum indischen Unternehmen Flipkart. Nun, haben die soziale Sicherheit bestanden?
Fragen
1.
Dieb, Schatz und 2 TürenEin Dieb hat gerade ein paar alte Schatzhöhlen gefunden. Eine der Höhlen ist voller unglaublicher Schätze und die andere hat ein feuerspeiendes Monster, das jeden frisst, der diese Höhle öffnet.
Eine Höhle hat eine schwarze Tür, die mit Diamanten verziert ist und die andere Höhle hat eine braune Tür, die mit Saphiren verziert ist.
Jede der TĂĽren hat oben eine eingravierte Beschreibung. Die Beschreibungen sagen:
Schwarze TĂĽr: Monster ist da.
Braune TĂĽr: Nur eine TĂĽr spricht die Wahrheit.
Welche Tür soll der Dieb öffnen?
ÜbersetzungDer Dieb hat gerade ein paar alte Höhlen gefunden. Eine der Höhlen ist voller unglaublicher Schätze und die andere ist ein feuerspeiendes Monster, das jeden frisst, der diese Höhle öffnet.
Der Eingang zur ersten Höhle ist durch eine schwarze, mit Diamanten verzierte Tür und durch eine andere, mit Saphiren verzierte, braune Tür versperrt.
Auf jeder TĂĽr befindet sich eine eingravierte Beschreibung. Beschreibungen lauten:
Schwarze TĂĽr: Das Monster ist da.
Braune TĂĽr: Nur eine TĂĽr sagt die Wahrheit.
Welche Tür sollte ein Dieb öffnen?
2.
Finden Sie das Alter der TöchterAlok hat drei Töchter. Sein Freund Shyam möchte wissen, wie alt seine Töchter sind. Alok gibt ihm den ersten Hinweis.
- Das Produkt ihres Alters ist 72. Shyam sagt, dies sei nicht genug Information, Alok gibt ihm einen zweiten Hinweis.
- Die Summe ihres Alters entspricht meiner Hausnummer. Shyam geht hinaus und sieht sich die Hausnummer an und sagt: "Ich habe immer noch nicht genug Informationen, um das Alter zu bestimmen." Alok gibt zu, dass Shyam nicht raten kann und gibt ihm den dritten Hinweis
- Das älteste der Mädchen mag Erdbeereis. Shyam kann nach dem dritten Hinweis raten.
Können Sie sich vorstellen, wie alt drei Töchter sind?
ÜbersetzungAlok hat drei Töchter. Sein Freund Shiyam will das Alter seiner Töchter wissen. Alok gibt ihm den ersten Hinweis.
- Das Produkt ihres Alters ist 72. Shiyam sagt, dass diese Information nicht ausreicht, dann gibt Alok ihm einen zweiten Hinweis.
- Die Summe ihres Alters entspricht der Nummer meines Hauses. Shiyam kommt heraus, sieht sich die Hausnummer an und sagt: "Ich habe immer noch nicht genug Informationen, um das Alter zu bestimmen." Alok gibt zu, dass Shiyam nicht raten kann und gibt ihm deshalb einen dritten Hinweis.
- Die ältesten Mädchen lieben Erdbeereis. Erst nach dem dritten Hinweis gelang es Shiyama, das Alter seiner Töchter zu erraten.
Können Sie sich vorstellen, wie alt jede der drei Töchter ist?
Die Aufgaben
1.
Tom und JerryTom und Jerry streiten sich seit langem um ein Stück Käse. Also bist du endlich zur Rettung gekommen und hast entschieden, dass das Ergebnis des Kampfes durch ein mathematisches Spiel entschieden wird, in dem du eine Zahl N schreibst (1 <= N <= 10^6)
. Tom und Jerry spielen das Spiel alternativ und jeder von ihnen subtrahiert eine Zahl n [n < N]
so dass N % n = 0
.
Das Spiel wird abwechselnd wiederholt, bis derjenige, der jetzt keinen weiteren Zug mehr machen kann, das Spiel verliert.
Das Spiel beginnt mit dem ersten Zug von Tom. Es versteht sich von selbst, dass sich beide optimal bewegen werden. Sie bestimmen, wer das Spiel gewinnt.
Eingabe: Die erste Zeile jedes Testfalls besteht aus N der Zahl.
Ausgabe: 1 ausgeben, wenn Tom gewinnt, und 0 ausgeben, wenn Jerry in einer separaten Zeile gewinnt.
Einschränkungen:
1 <= N <= 10^6
Probe:
Eingang: 2 / Ausgang: 1
Eingang: 4 / Ausgang: 1
ÜbersetzungTom und Jerry kämpften lange Zeit um ein Stück Käse. Sie haben sich entschieden, ihnen zu helfen, schnell den Gewinner zu ermitteln. Das Ergebnis des Spiels wird in einem mathematischen Spiel entschieden, in dem Sie die Zahl N (1 <= N <= 10^6)
schreiben. Tom und Jerry spielen das Spiel nacheinander. Jeder von ihnen subtrahiert die Zahl n [n < N]
so dass N % n = 0
.
Das Spiel geht weiter, bis einer der Teilnehmer einen Zug machen kann. Wer nicht den letzten Zug machen kann, verliert.
Das Spiel beginnt mit dem ersten Zug von Tom. Es ist klar, dass beide optimal vorgehen werden. Sie mĂĽssen bestimmen, wer das Spiel gewinnt.
Eingabe: Die erste Eingabezeile jedes Tests besteht aus der Zahl N.
Das Programm sollte Folgendes ausgeben: 1, wenn Tom gewinnt; 0 wenn Jerry gewinnt. In einer separaten Zeile.
Einschränkungen:
1 <= N <= 10 ^ 6
Beispiel
Eingang: 2 / Ausgang: 1
Eingang: 4 / Ausgang: 1
2.
N Sitzungen in einem RaumEs gibt einen Tagungsraum in einer Firma. Es gibt N Besprechungen in Form von (S[i], F[i])
wobei S [i] die Anfangszeit der Besprechung i ist und F [i] die Endzeit der Besprechung i ist.
Wie viele Besprechungen können maximal im Besprechungsraum stattfinden?
Eingabe:
Die erste Eingabezeile besteht aus der Anzahl der Testfälle. Die Beschreibung der T-Testfälle lautet wie folgt:
Die erste Zeile besteht aus der Größe des Arrays, die zweite Zeile enthält die Startzeit aller Meetings, die durch ein Leerzeichen voneinander getrennt sind, dh S [i]. Die dritte Zeile enthält die Endzeit aller Besprechungen, die durch ein Leerzeichen voneinander getrennt sind, dh F [i].
Ausgabe:
In jeder separaten Zeile wird die Reihenfolge, in der die Besprechungen stattfinden, durch ein Leerzeichen getrennt gedruckt.
Einschränkungen:
1 ≤ T ≤ 70
1 ≤ N ≤ 100
1 ≤ S[ i ], F[ i ] ≤ 100000
Beispiel:
Eingabe:
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
Ausgabe:
1 2 4 5
6 7 1
ĂśbersetzungDas Unternehmen verfĂĽgt ĂĽber einen Tagungsraum. Es gibt N Besprechungen in der Form (S [i], F [i])
, wobei S [i] die Anfangszeit der Besprechung i und F [i] die Endzeit der Besprechung i ist.
Die Aufgabe besteht darin, die maximale Anzahl von Besprechungen im Besprechungsraum zu platzieren.
Eingabedaten:
Die erste Eingabezeile enthält die Anzahl der Tests. Die Beschreibung der Tests sieht folgendermaßen aus:
• Die erste Zeile besteht aus der Größe des Arrays.
• Die zweite Zeile enthält ein Array mit der Startzeit aller Besprechungen S [i], die jeweils durch ein Leerzeichen getrennt sind.
• Die dritte Zeile enthält ein Array mit der Endzeit aller Besprechungen F [i], von denen jede durch ein Leerzeichen getrennt ist.
Fazit:
In jeder separaten Zeile wird die Reihenfolge, in der die Besprechungen stattfinden, durch Leerzeichen getrennt ausgedruckt.
Einschränkungen:
1 ≤ T ≤ 70
1 ≤ N ≤ 100
1 ≤ S [i], F [i] ≤ 100000
Ein Beispiel:
Eingabe:
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
Ausgabe:
1 2 4 5
6 7 1
3.
Inversion des ArraysGegeben eine Reihe von positiven ganzen Zahlen. Die Aufgabe besteht darin, die Inversionszahl des Arrays zu ermitteln.
Inversionszahl: Bei einem Array gibt die Inversionszahl an, wie weit (oder wie nah) das Array von der Sortierung entfernt ist. Wenn das Array in umgekehrter Reihenfolge sortiert ist, ist die Inversionszahl das Maximum.
Formal bilden zwei Elemente a [i] und a [j] eine Inversion, wenn a[i] > a[j]
und i < j
.
Eingabe: Die erste Eingabezeile enthält eine Ganzzahl T, die die Anzahl der Testfälle angibt. Die erste Zeile jedes Testfalls ist N, die Größe des Arrays. Die zweite Zeile jedes Testfalls enthält N Elemente.
Ausgabe: Gibt die Inversionszahl des Arrays aus.
Einschränkungen:
1 ≤ T ≤ 100
1 ≤ N ≤ 107
1 ≤ C ≤ 1018
Beispiel:
Eingabe:
1
5
2 4 1 3 5
Ausgabe:
3
ĂśbersetzungEs wird eine Reihe natĂĽrlicher Zahlen angegeben. Die Aufgabe besteht darin, die Anzahl der Inversionen des Arrays zu ermitteln.
Anzahl der Inversionen: Bei einem Array gibt die Anzahl der Inversionen an, wie weit das Array von der Sortierung entfernt (oder nahe) ist. Wenn das Array bereits sortiert ist, beträgt die Anzahl der Inversionen 0. Wenn das Array in umgekehrter Reihenfolge sortiert ist, ist die Anzahl der Inversionen maximal.
Formal bilden zwei Elemente a [i] und a [j] eine Inversion, wenn a[i] > a[j]
und i < j
.
Eingabedaten:
Die erste Zeile enthält eine Ganzzahl T, die die Anzahl der Tests angibt. Die erste Zeile jedes Tests ist N, die Größe des Arrays. Die zweite Zeile jedes Tests enthält N Elemente.
Ausgabe:
Gibt die Anzahl der Inversionen des Arrays aus.
Einschränkungen:
1 ≤ T ≤ 100
1 ≤ N ≤ 10 7
1 ≤ C ≤ 10 18
Ein Beispiel:
Eingabe:
1
5
2 4 1 3 5
Ausgabe:
3
Nun, wie versprochen! Viele konnten Fragen beantworten, aber bei den Aufgaben war es anscheinend schwieriger! :)
Die Antworten
Frage 1Antwort: an der schwarzen TĂĽr.
Lösung: Sehen wir uns die Beschreibung der braunen Tür an: „Nur eine Tür sagt die Wahrheit.“ Es kann wahr oder falsch sein.
Szenario 1: Die Beschreibung der braunen Tür ist richtig. Dann sollte die Beschreibung an der schwarzen Tür („Das Monster ist hier“) eine Lüge sein. Dies bedeutet, dass die Höhle mit der schwarzen Tür Schätze enthält!
Szenario 2: Die Beschreibung der braunen Tür ist falsch. Dann sind entweder beide Beschreibungen falsch oder beide wahr. Beide Beschreibungen können nicht wahr sein, da dies unmöglich und nicht konsistent ist. Dies bedeutet, dass beide Beschreibungen falsch sind. Wieder ein Schatz in der schwarzen Tür.
Frage 2Antwort: Töchter Alter: 3 Jahre, 3 Jahre und 8 Jahre.
Lösung: 1) Für den Anfang wird gesagt, dass das Produkt des Alters 72 ist.
Hier finden Sie alle möglichen Optionen, für die das Produkt gleich 72 ist:
- 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
Dies reicht natĂĽrlich nicht aus, um eine genaue Antwort zu geben.
Als nächstes schaut sich Shiyam die Hausnummer an (welche Nummer nicht gemeldet wird) und kann immer noch keine genaue Antwort geben. Fassen Sie alle zuvor gefundenen Optionen zusammen:
- 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
Offensichtlich ist eine der Summen die Hausnummer. Da Shiyam nicht genau antworten konnte, ist die eindeutige Schlussfolgerung, dass die Hausnummer 14 ist, da es zwei Optionen mit diesem Ergebnis gibt.
- 2 + 6 + 6 = 14
- 3 + 3 + 8 = 14
3) Aus dem dritten Hinweis geht hervor, dass es eine ältere Tochter gibt (nicht mehrere, sondern eine), sodass von den beiden Optionen, die wir im zweiten Schritt gefunden haben, nur eine geeignet ist.
Aufgabe 1Lolohaev dachte richtig!Antwort: (n - 1) % 2
Lösung: 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); } }
Aufgabe 2Die Lösung verwendete den Greedy-Algorithmus.
#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; }
Aufgabe 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; } }