عاجل في الغرفة! إحياء عنوان التدريب على تكنولوجيا المعلومات. جمعنا مرة أخرى الأسئلة والمهام التي طُرحت في المقابلات في شركات تكنولوجيا المعلومات.

ستظهر المشكلات كل أسبوع - ترقبوا! يتم دعم العمود من قبل وكالة التوظيف
Spice IT .
اليوم لدينا مهام - بمستويات مختلفة للغاية من التعقيد - من المقابلات إلى الشركة الهندية Flipkart. حسنا ، لقد مرت الضمان الاجتماعي؟
الأسئلة
1.
اللص ، الكنز و 2 الأبوابسارق وجد للتو زوجًا من كهوف الكنز القديمة. أحد الكهوف مليء بكنز لا يصدق والآخر لديه وحش يتنفس النار يأكل أي شخص يفتح هذا الكهف.
يحتوي أحد الكهوف على باب أسود مزين بالماس والكهف الآخر له باب بني مزين بالياقوت.
كل الأبواب لها وصف محفور في الأعلى. الأوصاف تقول:
الباب الأسود: الوحش هنا.
الباب البني: باب واحد فقط يتحدث عن الحقيقة.
أي باب يجب أن يفتح اللص؟
ترجمةاللص وجدت للتو اثنين من الكهوف القديمة. أحد الكهوف مليء بكنوز لا تصدق ، والآخر هو وحش يتنفس النار وسيأكل أي شخص يفتح هذا الكهف.
يتم حظر مدخل الكهف الأول من باب أسود مزين بالماس ، وإلى باب آخر - باب بني مزين بالياقوت.
كل باب لديه وصف محفور في الأعلى. قراءة الأوصاف:
الباب الأسود: الوحش هنا.
الباب البني: باب واحد فقط هو قول الحقيقة.
ما الباب يجب فتح اللص؟
2.
البحث عن أعمار البناتألوك لديه ثلاث بنات. يريد صديقه شيام معرفة أعمار بناته. ألوك يعطيه أول تلميح.
- المنتج من أعمارهم 72. يقول شيام هذه ليست معلومات كافية يعطيه ألوك تلميحًا ثانيًا.
- مجموع أعمارهم يساوي رقم بيتي. يخرج شيام وينظر إلى رقم المنزل ويقول "ما زلت لا أملك معلومات كافية لتحديد الأعمار". يعترف ألوك أن شيام لا يستطيع تخمينه ويعطيه التلميح الثالث
- أقدم الفتيات يحب آيس كريم الفراولة. شيام قادر على تخمين بعد التلميح الثالث.
هل يمكنك تخمين ما هي أعمار ثلاث بنات؟
ترجمةألوك لديه ثلاث بنات. يريد صديقه شيام معرفة عمر بناته. ألوك يعطيه أول تلميح.
- نتاج أعمارهم هو 72. يقول شيام أن هذه المعلومات ليست كافية ، ثم يعطيه Alok فكرة ثانية.
- مجموع أعمارهم يساوي عدد منزلي. يخرج شيام ، وينظر إلى رقم المنزل ويقول: "ما زلت لا أملك معلومات كافية لتحديد العمر". يعترف Alok بأن شيام لن يكون قادرًا على تخمينه ، وبالتالي يعطيه فكرة ثالثة.
- الاكبر سنا من الفتيات يحبون الآيس كريم الفراولة. فقط بعد الدليل الثالث تمكن شياما من تخمين عمر بناته.
هل يمكنك تخمين كم عمر كل من الفتيات الثلاث؟
المهام
1.
توم وجيريمنذ وقت طويل للغاية يقاتل توم وجيري مع بعضهما البعض من أجل قطعة من الجبن. في النهاية ، جئت إلى الإنقاذ وقررت أن نتيجة المعركة ستحددها لعبة رياضية ، حيث ستكتب رقمًا N (1 <= N <= 10^6)
. سوف يلعب توم وجيري اللعبة بدلاً من ذلك ويطرح كل منهما عدد n [n < N]
بحيث N % n = 0
.
تتكرر اللعبة بالتناوب حتى يفقد اللعبة ، الذي لا يستطيع الآن القيام بخطوة أخرى.
تبدأ اللعبة مع توم لعب الخطوة الأولى. من المفهوم جيدًا أن كلاهما سيتحركان بالطريقة المثلى. عليك أن تحدد من يفوز باللعبة.
الإدخال: السطر الأول من كل حالة اختبار يتكون من العدد N.
الإخراج: طباعة 1 إذا فاز توم وطباعة 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])
حيث 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] و [j] انعكاسًا إذا كان a[i] > a[j]
و 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] و [j] انعكاسًا إذا كان a[i] > a[j]
و 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
هذا ، بالطبع ، لا يكفي لإعطاء إجابة دقيقة.
بعد ذلك ، ينظر شيام إلى رقم المنزل (وهو رقم لم يتم الإبلاغ عنه) ولا يزال لا يمكنه إعطاء إجابة دقيقة. لخص كل الخيارات التي تم العثور عليها سابقًا:
- 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
من الواضح أن أحد المبالغ هو رقم المنزل. نظرًا لعدم تمكن شيام من الإجابة بدقة ، فإن الاستنتاج القاطع هو أن رقم المنزل هو 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; } }