În acest articol, vom discuta unele dintre întrebările și provocările Hackerrank importante puse în diverse recrutări de companii de produse. Dacă sunteți o persoană interesată de programare, atunci această listă de întrebări importante de la Hackerrank trebuie neapărat rezolvată.
Întrebări Hackerrank cu soluții
Iată câteva dintre cele mai multe întrebări Hackerrank cu soluții.
- Numărul de insule folosind DFS
- Problema sumei de subansambluri
- Problema șobolanului într-un labirint
- Numărul de moduri de a ajunge la a n-a scară
- Problema Sudoku
- Rotiți matricea de K ori
- 0-…1 Problema Knapsack
- Detectați o buclă într-o listă legată
- Cercetător de paranteze redundante
- Verificator de paranteze echilibrate
- Mediana a două matrici sortate
Întrebare 1:
Eșantion de întrebări Hackerrank: Bank Compare
Există două bănci; Banca A și Banca B. Ratele dobânzilor lor variază. Ați primit oferte de la ambele bănci în ceea ce privește rata anuală a dobânzii, durata și variațiile ratei dobânzii pe întreaga durată.
Trebuie să alegeți oferta care vă costă cea mai mică dobândă și să o respingeți pe cealaltă. Faceți calculele și faceți o alegere înțeleaptă.
Rambursarea împrumutului are loc cu o frecvență lunară, iar rata lunară echivalentă (EMI) se calculează cu ajutorul formulei prezentate mai jos :
EMI = loanAmount * monthlyInterestRate / ( 1 – 1 / (1 + monthlyInterestRate)^(numberOfYears * 12))
Constrângeri:
1 <= P <= 1000000
1 <=T <= 50
.
1<= N1 <= 30
1<= N2 <= 30
Formatul de intrare: N1 <= 30
:
- Prima linie: P – principal (suma împrumutului)
- Secunda linie: T – Total Tenure (în ani).
- Al treilea rând: N1 este numărul de plaje de rate ale dobânzii pentru o anumită perioadă de către banca A. Prima placă începe din primul an, iar a doua placă începe de la sfârșitul primei plaje și așa mai departe.
- Următoarea linie N1 va conține rata dobânzii și perioada acestora.
- După N1 linii vom primi N2 și anume numărul de plaje oferite de cea de-a doua bancă.
- Următoarele N2 linii vor conține numărul de plaje de rate ale dobânzii pentru o anumită perioadă oferite de banca B. Prima placă începe din primul an, iar a doua placă începe de la sfârșitul primei plaje și așa mai departe.
- Perioada și rata vor fi delimitate de un singur spațiu alb.
Formatul de ieșire:
Output Format: Decizia dumneavoastră – fie Banca A, fie Banca B.
Explicație:
Eșantion de intrare 1:
100002035 9.510 9.65 8.5310 6.95 8.55 7.9
Eșantion Ieșire 1:
Bank B
Eșantion Intrare 2:
50000026313 9.53 6.910 5.6314 8.56 7.46 9.6
Eșantionul de ieșire 2:
Bank A
Soluție:
Soluție:
:
#include <stdio.h>#include<math.h>int main() { double p,s,mi,sum,emi,bank,sq; int y,n,k,i,yrs,l=0; scanf("%lf",&p); scanf("%d",&y); for(k=0;k<2;k++) { scanf("%d",&n); sum=0; for(i=0;i<n;i++) { scanf("%d",&yrs); scanf("%lf",&s); mi=0; sq=pow((1+s),yrs*12); emi= (p*(s))/(1-1/sq); sum= sum + emi; } bank=sum; } if(bank<bank) printf("Bank A"); else printf("Bank B"); return 0;}
Eșantion de întrebări Hackerrank: One Egg
„One Egg” este o companie de aprovizionare cu ouă care furnizează ouă retailerilor. Ei au M clase de ouă. Fiecare clasă poate avea un număr N de ouă (N poate fi același sau poate varia de la o clasă la alta). Acceptă comenzi prin poștă pentru X ouă. Ca răspuns, ei confirmă dacă pot furniza ouăle cu o notă de „Mulțumesc” și numărul de ouă sau cu o notă de „Îmi pare rău” și numărul de ouă pe care le pot furniza. De asemenea, menționează defalcarea ouălor în funcție de categoria pe care o vor furniza. Ouăle comandate sunt ajustate în funcție de diferitele clase, primul fiind cel mai mare număr de ouă, apoi soldul este ajustat în funcție de cea de-a doua clasă și așa mai departe. Compania este, de asemenea, un pic superstițioasă. În cazul în care numărul de ouă comandate este mai mare sau egal cu numărul total de ouă din stoc, atunci reține un ou și răspunde cu o notă „Ne pare rău” cu numărul total de ouă din stoc minus unul și defalcarea ouălor pe clase.
Nota: Dacă clasele au același număr de ouă, atunci clasa introdusă prima trebuie să fie selectată pentru ajustare.
Formatul de intrare:
Prima linie conține două numere întregi separate prin spații care denotă valorile respective ale lui M (numărul de clase de ouă) și X, numărul de ouă comandate Următoarele M linii conțin câte un număr întreg care indică numărul de ouă disponibile în fiecare clasă
Formatul de ieșire:
Prima linie ar trebui să fie, dacă X este mai mic decât numărul total de ouă, atunci se tipărește ” Mulțumesc, comanda dumneavoastră de X ouă este acceptată” Altfel, dacă X este mai mare sau egal cu numărul total de ouă, atunci se tipărește ” ” ” Ne pare rău, nu putem furniza decât (numărul total de ouă din stoc -1) ouă” T hen M linii cu 3 coloane: Prima coloană – Numărul de ouă disponibile în fiecare clasă A doua coloană – Ouăle alocate pentru fiecare clasă pentru acea comandă A treia coloană – Soldul ouălor pentru fiecare clasă
Constrângeri:
1 ≤ M ≤ 20 N ≥ 1 X ≥ 1
Eșantionul de intrare 1:
5 150 50 15 80 10 5
Eșantionul de ieșire 1:
Thank you, your order for 150 eggs are accepted 50 50 0 15 15 0 80 80 0 10 5 5 5 0 5
Explicație:
Comanda totală de 150 de ouă este mai mică decât numărul total de ouă 50+15+80+10+5 = 160. De aici și mesajul de mulțumire. 150 a fost ajustat mai întâi față de clasa cu primul cel mai mare număr de ouă 80. Soldul de 150-80 = 70 a fost ajustat față de a doua clasă cu cel mai mare număr de ouă 50. Soldul de 70-50 = 20 a fost apoi ajustat față de 15. Soldul de 20-15 = 5 a fost apoi ajustat la 10, lăsând 5 ouă în clasa respectivă.
Eșantionul de intrare 2:
4 250 80 50 70 20
Eșantionul de ieșire 2:
Sorry, we can only supply 219 eggs 80 80 0 50 50 0 70 70 0 20 19 1
Explicație:
Comanda totală de 250 de ouă a fost mai mare decât numărul total de ouă 80+50+70+20 = 220. De aici și mesajul de scuze. 250 a fost mai întâi ajustat față de clasa cu primul cel mai mare număr de ouă 80. Soldul de 250-80 = 170 a fost ajustat față de a doua clasă cu cel mai mare număr de ouă 70. Soldul de 170-70 = 100 a fost apoi ajustat la 50. Soldul de 100-50 = 50 a fost apoi ajustat la 20. Având în vedere că soldul este mai mare decât ultima clasă de ouă, în această ultimă clasă a rămas doar un singur ou.
Soluție:
#include <stdio.h>int main() {int m,x,i,a,sum=0,s;scanf("%d %d",&m,&x);for(i=0;i<m;i++){scanf("%d",&a);sum=sum+a;}if(sum>x) printf("Thank you, your order for %d eggs are accepted\n",x);else{ printf("Sorry, we can only supply %d eggs\n",sum-1); x=sum-1;}for(i=0;i<m;i++){ if(x>=a) { printf("%d\t%d\t%d\n",a,a,0); x=x-a; } else if(x<a) { s=a-x; printf("%d\t%d\t%d\n",a,x,s); x=0; } else if(x==0) printf("%d\t%d\t%d\n",a,0,a); } return 0;}
Întrebare 3:
Eșantion de întrebări Hackerrank: Milk Man and His Bottles
Un lăptar servește lapte în sticle ambalate de diferite mărimi. Dimensiunile posibile ale sticlelor sunt {1, 5, 7 și 10} litri. El dorește să furnizeze cantitatea dorită folosind cât mai puține sticle posibil, indiferent de dimensiune. Obiectivul dumneavoastră este să-l ajutați să găsească numărul minim de sticle necesare pentru a furniza cererea de lapte dată.
Formatul de intrare:
- Prima linie conține numărul de cazuri de testare N
- Legile următoare N, fiecare conține un număr întreg pozitiv Li care corespunde cererii de lapte.
Formatul de ieșire:
Pentru fiecare intrare Li, imprimați numărul minim de sticle necesare pentru a satisface cererea
Constrângeri:
1 <= N <= 1000 Li > 0 1 <= i <= N
Eșantion de intrare și ieșire:
2 7
Explicație:
Numărul de cazuri de test este 2
Pentru 17 = 10*1 + 7*1 = 2
Pentru 65 = 10*6 + 5*1 = 7
Câteva exemple suplimentare:
Pentru 99 = 10*9 + 7*1 + 1*2 = 12
Pentru 63 = 10*6 + 1*3 =9
Soluție:
#include <stdio.h>int main(){ int n,b=0,i,m,s=0; scanf("%d",&m); for( i=0;i<m;i++) { scanf("%d",&n); b=n/10; n=n%10; s=s+b; b=0; b=n/7; n=n%7; s=s+b; b=0; b=n/5; n=n%5; s=s+b; b=0; b=n/1; s=s+b; printf("%d\n",s); s=0; b=0; } return 0;}
Întrebarea 4:
Eșantion de întrebări Hackerrank: Vânătoare de mirese
Sam este un burlac eligibil. El decide să se așeze în viață și să întemeieze o familie. El pleacă la vânătoare de mirese. El vrea să se căsătorească cu o fată care să aibă cel puțin una dintre cele 8 calități menționate mai jos:-
1) Fata ar trebui să fie bogată.
2) Fata ar trebui să fie inginer/medic.
3) Fata ar trebui să fie frumoasă.
4) Fata ar trebui să aibă o înălțime de 5,3″.
5) Fata ar trebui să lucreze într-un MNC.
6) Fata ar trebui să fie extrovertită.
7) Fata nu ar trebui să aibă ochelari.
8) Fata ar trebui să fie amabilă și cinstită.
Este în căutarea unei mirese care să aibă unele sau toate cele 8 calități menționate mai sus. La vânătoarea de mirese, el poate găsi mai multe pretendente pentru a-i fi soție.
În acest caz, el vrea să aleagă o fată a cărei casă este cea mai apropiată de casa lui. Găsește pentru Sam o mireasă care să aibă maximum de calități. Dacă în cazul în care, există mai multe pretendente care se află la distanță egală de casa lui Sam’; atunci
imprimă „”Poligamia nu este permisă””.
În cazul în care nu există nici o fată potrivită care să corespundă criteriilor, atunci se tipărește „”Nu s-a găsit nici o fată potrivită””
Dată o matrice N*M, casa lui Sam se află la (1, 1). Ea este notată cu 1. În aceeași matrice, locația unei fete căsătoribile este, de asemenea, notată cu 1. Prin urmare, 1 în locația (1, 1) nu ar trebui să fie considerată ca fiind locația locației unei fete căsătoribile.
Calificările acelei fete, conform criteriilor lui Sam”, trebuie să fie decodate din numărul de vecini non-zero (maxim 8 căi) pe care îi are. Similar condiției de mai sus, 1 în locația (1, 1) nu ar trebui să fie considerat ca fiind calitatea unei fete. Vezi secțiunea Exemplu pentru a înțelege mai bine.
Găsește Sam, o Mireasă potrivită și tipărește rândul și coloana miresei, și află numărul de calități pe care le posedă Mireasa.
NOTA: Distanța este calculată în număr de salturi în orice direcție, adică:
. (Stânga, Dreapta, Sus, Jos și Diagonală)
Constrângeri:
2 <= N,M <= 10^2
Formatul de intrare:
- Prima linie conține rândul (N) și coloana (M) caselor.
- Următoarele N linii conțin datele despre fete și calitățile lor.
Formatul de ieșire:
Va conține rândul și coloana miresei, precum și numărul de calități pe care Mireasa le posedă, separate prin două puncte (adică :).
Eșantionul de intrare 1:
2 9
1 0 1 1 0 1 1 1 1 1
0 0 0 0 1 0 1 0 0 0 0 1
Eșantionul de ieșire 1:
:
Explicație:
Fata și calitățile sunt prezente la (1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,4),(2,6),(2,9).
Fata prezentă la (1,3) are 2 calități (adică (1,4)și (2,4)).
Fata prezentă la (1,4) are 2 calități.
Fata prezentă la (1,4) are 2 calități.
Fata prezentă la (1,6) are 2 calități.
Mireasa prezentă la (1,7) are 3 calități.
Mireasa prezentă la (1,8) are 3 calități.
Mireasa prezentă la (1,9) are 2 calități.
Mireasa prezentă la (2,4) are 2 calități.
Mireasa prezentă la (2,6) are 2 calități.
Mireasa prezentă la (2,9) are 2 calități.
Cum vedem, există doi concurenți care au calități maxime, unul este la (1,7) și altul la (1,8).
Fata care este cea mai apropiată de casa lui Sam este la (1,7). Prin urmare, ea este mireasa.
În consecință, rezultatul va fi 1:7:3.
Eșantionul de intrare 2:
6 6
1 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 0
0 0 1 1 1 1 0
0 0 1 1 1 1 0
0 0 0 0 0 0 0
Eșantion de ieșire 2:
Explicație:
Mireasa și calitățile sunt prezente la (3,3),(3,4),(3,5),(4,3),(4,4),(4,5),(4,5),(5,3),(5,4),(5,5)
Mireasa prezentă la (3,3) are 3 calități (i.adică (3,4),(4,3) și (4,4)).
Mireasa prezentă la (3,4) are 5 calități.
Mireasa prezentă la (3,5) are 3 calități.
Mireasa prezentă la (4,3) are 5 calități.
Mireasa prezentă la (4,4) are 8 calități.
Mireasa prezentă la (4,5) are 5 calități.
Mireasa prezentă la (5,3) are 3 calități.
Mireasa prezentă la (5,4) are 5 calități.
Mireasa prezentă la (5,5) are 3 calități.
Cum vedem, fata prezentă în (4,4) are numărul maxim de calități. Prin urmare, ea este mireasa.
În consecință, rezultatul va fi 4:4:8.
Soluție:
#include<stdio.h>int main(){ int n,m,i,g,j,p,q,max=0,cnt=0,k=1,c=0,u=1,x,y,t1,min=0, sc,e,f,ct=0,a,count=0,t2=0,t=0; scanf("%d %d",&n,&m); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&g); } } g=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { cnt=0; if(g==1) { t++; for(p=i-1;p<=i+1;p++) { for(q=j-1;q<=j+1;q++) { if(g==1) { cnt++; } } }cnt=cnt-1; a=cnt; k++; } } } for(k=1;k<=t;k++) { if(a>max) max=a; } if(max==0) { printf("No suitable girl found"); return 0; } for(k=1;k<=t;k++) { if(a==max) c++; } for(k=1;k<=t;k++) { t2=0; if(a==max) { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(g==1) t2++; if(t2==k) { x=i; y=j; u++; } } } } } t1=u-1; if(c==1) printf("%d:%d:%d",x,y,max); else { for(u=1;u<=t1;u++) { sc=sqrt(((x-1) * (x-1)) + ((y-1)*(y-1)));; } min=sc; for(u=1;u<=t1;u++) { if(sc<min) min=sc; } for(u=1;u<=t1;u++) { if(sc==min) count++; } if(count>1) printf("Polygamy not allowed"); if(count==1) { for(u=1;u<=t1;u++) { if(sc==min) printf("%d:%d:%d",x,y,max); } } } return 0;}
Puteți verifica și acestea:
- Întrebări despre structurile de date & Întrebări despre algoritmi
- Întrebări despre programarea în C
.