-
Posts
69 -
Joined
-
Last visited
Posts posted by Raul
-
-
29 minutes ago, TheOne01 said:
Am si eu o intrebare: La 12:40 (de exemplu) ce ar trebui sa afiseze ?
Twenty minutes to one. Ai grija la constrangeri.
-
2 hours ago, aurelL said:
Nu ştiu ce e ăia funcţie în programare, dar am încercat să fac ceva cu if, else if, else. Ce e O(1)?
#include <iostream> using namespace std; int main() { int h, m; cin >> h >> m; if ( m == 0 ) { cout << h << " " << "o' clock"; } else if ( m >= 1 && m < 30 && m != 15 ) { cout << h << " " << "past" << " " << m; } else if ( m == 30 ) { cout << "half past" << " " << h; } else if ( m == 15 ) { cout << "quarter past" << " " << h; } else if ( m == 45 ) { cout << "quarter to" << " " << h+1; } else cout << 60-m << " " << "to" << " " << h+1; return 0; }
Rezolvarea este partial corecta, deoarece trebuie tradus complet in text, la tine ramanand numerele netraduse. Pe langa asta, nu respecti, in totalitate, constrangerile.
Ce sa-ti spun, iti recomand sa citesti si sa intelegeti tot ce zice aici (legat de prima dilema), si ce zice aici (legat de a doua dilema). Evident, astea sunt niste lucruri foarte basic, ar trebui sa le aprofundezi, daca chiar te intereseaza. Dupa aia, mai uita-te pe aici.
- 1
-
Propun o noua problema, una care poate parea putin mai ciudata, dar este destul de interesanta.
Dat orice interval orar (ora de pe ceas, efectiv), acesta se poate converti in cuvinte din limbaj natural, sub forma urmatoare:
Pentru o valoare a minutului data, asta inseamna (notat cu m)
- cand m = 0, atunci se foloseste o' clock
- cand 1 <= m <= 30, atunci se foloseste past
- cand m > 30, atunci se foloseste to
Se cere scrierea unei functii care returneaza timpul dat sub forma de text, in limbaj natural, respectand regulile de mai sus. Ca input, se dau doua valori intregi si naturale, notam h si m, unde h reprezinta ora, iar m reprezinta minutul.
Constrangeri
- 1 <= h <= 12
- 0 <= m < 60
Exemple
- Pentru h = 5 si m = 47, rezulta "thirteen minutes to six"
- Pentru h = 3 si m = 00, rezulta "three o' clock"
- Pentru h = 7 si m = 15, rezulta "quarter past seven"
Limbajul care va fi folosit este la alegere libera. Sunt acceptate toate solutiile, indiferent de complexitatea timp, dar trebuie incercat sa se rezolve in O(1). O solutie personala va fi pusa ulterior.
Spor!
- 2
-
Intr-adevar, o intrebare extrem de dificila, care necesita extrem de multa gandire si precizie.
- 2
-
Testat, este in regula, a trecut toate testcase-urile, kudos!
- 1
-
Te ajuta @aelius, el este alesul!
-
Testat, este in regula, a trecut toate testcase-urile, kudos!
Solutia mea (Golang) este urmatoarea:
func solve(B []int32) int { counter, sum, ok := 0, 0, true for _, v := range B { sum += v if sum % 2 == 1 { ok = false counter += 2 continue } ok = true } if !ok { return -1 } return counter }
* Problema este adaptata de la ceva asemanator gasit pe HackerRank
-
Just now, Gecko said:
Am postat v2 in acelasi post pentru a nu ocupa spatiu prea mult.
Testat, este in regula, a trecut toate testcase-urile, kudos!
Sunt binevenite si alte propuneri, in continuare!
-
Esti destul de aproape, dar, din pacate, solutia nu este complet valida. O sa pun aici niste testcase-uri pe care da fail.
-
Propun o noua problema care necesita o logica buna.
Se da un array de numere intregi si pozitive. Singura alterare permisa a elementelor din array este incrementarea acestora, strict cu valoarea 1. Toate numerele din array trebuie sa devina pare, intr-un final, cu un numar minim de incrementari, dar respectand regula urmatoare: atunci cand se face o incrementare pe pozitia i din array, in mod obligatoriu se face incrementare fie pe pozitia i-1, fie pe pozitia i+1. Se cere returnarea numarului minim de incrementari, astfel incat, in final, toate numerele din array sa fie pare. In cazul in care input-ul nu este valid, deci nu se poate ajunge la un rezultat corect, se va returna -1.
Constrangeri:
Se considera N a fi numarul de elemente din array, iar 2 <= N <= 1000
1 <= V[i] <= 10, iar 0 <= i <= N-1
Exemplu #1: Se da V = [4,5,6,7]. Se face incrementare, la primul pas, pe i = 2 si respectiv i = 3, deci va rezulta array-ul V = [4,5,7,8]. Acum, la pasul urmator, se va face incrementare pe i = 1 si respectiv i = 2, deci va rezulta array-ul V = [4,6,8,8]. In final, se intoarce numarul de incrementari facute, mai exact 4.
Exemplu #2: Se da V = [2,3,4,5,6]. Se face incrementare, la primul pas, pe i = 1 si respectiv i = 2, deci va rezulta array-ul V = [2,4,5,5,6]. Acum, la pasul urmator, se va face incrementare pe i = 2 si respectiv i = 3, deci va rezulta array-ul V = [2,4,6,6,6]. In final, se intoarce numarul de incrementari facute, mai exact 4.
Exemplu #3: Se da V = [1,2]. Oricum s-ar face incrementare, una dintre valori va fi mereu para, iar cealalta impara. Prin urmare, nu se poate ajunge la un rezultat corect, deci se intoarce -1.
Limbajul care va fi folosit este la alegere libera. Sunt acceptate toate solutiile, indiferent de complexitatea timp, dar trebuie incercat sa se rezolve in maxim O(N). O solutie personala va fi pusa ulterior.
Spor!
-
3 hours ago, TheOne01 said:
Nu cred ca la inceput era specificat ca cele doua jumatati sa fie egale. Oricum am inteles Multumesc !
Mi-am dat seama ca nu se intelegea foarte clar treaba asta, de aceea am si modificat, acum sigur nu mai sunt dileme.
-
18 hours ago, TheOne01 said:
Salut, mi se pare mie sau algoritmul prezentat de theandruala nu merge chiar asa bine ?
Mai sunt numere care sunt Kaprekar, dar nu sunt afisate: de exemplu 4879
#include <iostream> using namespace std; bool isKaprekar(uint64_t k) { uint64_t q, r, n = 10, kp = k*k; if(k == 1) return true; while(kp > n) { q = kp/n; r = kp%n; if(q + r == k && q > 0 && r > 0) return true; n *= 10; } return false; } int main() { uint64_t p, q, i; cin>>p>>q; for(i=p; i<=q; i++) if(isKaprekar(i)) cout<<i<<" "; return 0; }
Exemplul dat cu 4879 este gresit, nefiind un numar Kaprekar (pe baza definitiei din textul problemei), dupa cum a demonstrat si Andruk. Bazeaza-te pe definita data in textul problemei, nu pe altceva. Am modificat acum ca sa fie mai clar, acum sigur nu mai sunt dileme. Imi pare rau pentru confuzia creata!
Rezolvarea ta nu este corecta, ai 3/7 testcase-uri care pica. In principal, problema e ca nu validezi corect si apar numere care nu sunt Kaprekar (evident, pe baza definitiei din textul problemei). Exemplu:
Input: p = 1000, q = 10000
Output asteptat: 2223 2728 4950 5050 7272 7777 9999
Output-ul tau: 2223 2728 4879 4950 5050 5292 7272 7777 9999LE: Solutia mea (Golang) este urmatoarea:
func kaprekar(p, q int64) { for i := p; i <= q; i++ { x := i * i xS := len(fmt.Sprintf("%d", x)) if xS % 2 == 1 { xS++ } d := int64(math.Pow(10, float64(xS/2))) l, r := x / d, x % d if i == l + r { fmt.Printf("%d ", i) } } }
* Problema este adaptata de la ceva asemanator gasit pe HackerRank
-
39 minutes ago, theandruala said:
public class MuieGO { public static void main(String[] args) { int p=1; int q=10000000; long startTime = System.currentTimeMillis(); for (int i = p; i <= q; i++) { if(check(i))System.out.print(i+" "); } System.out.println(); System.out.println(System.currentTimeMillis()-startTime + " milliseconds"); } static boolean check(long nr) { long numar = nr * nr; int lungime = String.valueOf(numar).length(); long jum1 = 0, jum2 = 0; if (lungime % 2 == 0) { jum1 = (long) (numar / Math.pow(10, (lungime / 2))); jum2 = (long) (numar % Math.pow(10, (lungime / 2))); } else { jum1 = (long) (numar / Math.pow(10, (lungime / 2) + 1)); jum2 = (long) (numar % Math.pow(10, (lungime / 2) + 1)); } return (jum1 + jum2 == nr); } }
1 9 45 55 99 297 703 999 2223 2728 4950 5050 7272 7777 9999 17344 22222 77778 82656 95121 99999 142857 148149 181819 187110 208495 318682 329967 351352 356643 390313 461539 466830 499500 500500 533170 538461 609687 643357 648648 670033 681318 791505 812890 818181 851851 857143 961038 994708 999999 4444444 4927941 5072059 5555556 9372385 9999999
2319 milliseconds
Am testat, solutia este valida, kudos!
Sunt binevenite si alte propuneri, in continuare.
-
De data aceasta, propun un challenge care nu necesita prea multe cunostinte in structuri de date, ci o logica buna.
O definitie necesara: In matematica, un numar Kaprekar, pentru o baza data, este un numar intreg si pozitiv, al carui valoare ridicata la patrat, in aceeasi baza, poate fi impartita in doua bucati, iar suma numerelor din aceste doua bucati rezulta efectiv in numarul original. Numarul se imparte in doua parti egale (sau +1 la una dintre parti, atunci cand este un numar impar de cifre), nu se fac "variante". Exemplu: 45 este un numar care respecta regula (numar Kaprekar), deoarece 45² = 2025 si 20+25 = 45.
Alte exemple: 9 respecta regula, deoarece 9² = 81 si 8+1 = 9; 297 respecta regula, deoarece 297² = 88209 si 88 + 209 = 297.
ATENTIE: Aceasta nu reprezinta definitia oficiala in totalitate, este o variatie, problema trebuie rezolvata pe baza la ce se spune aici.
A se observa ca in ultimul exemplu, numarul ridicat la patrat se imparte intr-o bucata de lungime doi si celalalta de lungime trei, deoarece are un numar impar de cifre, fata de cazurile in care ar fi un numar par de cifre. De asemenea, trebuie avut grija, daca una dintre cele doua bucati incepe cu un 0.
Se dau doua numere intregi, p si q, si se cere sa se afiseze toate numerele Kaprekar din respectivul interval (inclusiv p si q); 0 < p < q < 100000
Exemplu: p = 1, q = 100; se va afisa "1 9 45 55 99", acestea fiind numerele care respecta regula.
Limbajul care va fi folosit este la alegere libera. Solutiile cu complexitate timp mai mare decat O(N) sunt respinse. O solutie personala va fi pusa ulterior.
Spor!
- 1
- 1
-
Ambele solutii sunt ok.
Nu, nu prea ai ce sa scoti mai rapid de atat, pentru ca trebuie sa treci, totusi, prin toate nodurile arborelui, rezultand, in mod evident, intr-o complexitate timp O(N).
Solutia mea (Golang) este urmatoarea (foarte asemenatoare cu ce a facut Gecko):
func helper(root *TreeNode, L, R int, sum *int) { if root == nil { return } else if root.Val >= L && root.Val <= R { *sum += root.Val } helper(root.Left, L, R, sum) helper(root.Right, L, R, sum) } func sum(root *TreeNode, L int, R int) int { var sum int helper(root, L, R, &sum) return sum }
* Problema este luata si tradusa de pe Leetcode
-
Data o structura de date de tip arbore binar de cautare (BST), se cere calcularea sumei valorilor de pe toate nodurile unde valoarea este cuprinsa intre doua numere L si R (inclusiv) si returnarea acesteia.
Se garanteaza ca toate valorile din arbore sunt unice.* Numarul maxim de noduri din arbore este de 10^4
* Suma calculata si returnata se garanteaza a fi mai mica decat 2^31
EXEMPLU
Input: arbore = [10,5,15,3,7,null,18], L = 7, R = 15
Output: 32 (10+15+7)Limbajul care va fi folosit este la alegere libera. Solutiile cu complexitate timp mai mare decat O(N) sunt respinse. O solutie personala va fi pusa ulterior.
Spor!
- 1
-
Acea bucata de "dummy data" are o inteligenta mai mare ca a ta.
- 1
-
5 minutes ago, Nechfiro said:
Salut !
Urmam sa scriu acelasi titlu dar am gasit atata informatie aici in cat o sa ma tina ocupat ceva vrem
Doar o intrebare ce ma , cam baga in ceata ... Sa pun programarea pe primul plan ? Parcur cateva cursuri online pentru Python si Java momentat dar am si cumparat cateva carti(vreo 19 ) de pen testing si nu prea stiu ce sa prioritez
Multumesc anticipat !
Viata are prioritate, spune nu alcoolului la volan!
- 1
-
35 minutes ago, JeeP said:
Domnule Robert, din moment ce am functia la disponibilitate de ce sa nu o folosesc?
Nu cred ca am zgariat pe cineva la ochi cu asta nu?
Ce logica e asta, baiatul meu? Si daca iti punem streangul la dispozitie, inseamna ca trebuie sa il si folosesti? Pff...
-
Ala bala portocala
Cine mi-a mancat banana
-
Imi hackuiesti si mie un ID de Mess?
-
Casti din gama premium, ceva care chiar merita, redus pretul pe bune.
Produs: https://www.flanco.ro/produs/121912
Review: https://www.youtube.com/watch?v=2FV8UEOzQZs
-
Just now, admin2 said:
cheap troll..
SA TE IAU PE BASTON IEFTIN
- 1
-
1 minute ago, admin2 said:
de ce? RSTul trebuie sa fie singurul forum?
DA, RST TREBUIE SA FIE O UNICA SURSA DE BOGATIE IN ALE HACKINGULUI INTERNATIONAL AN PLM DE INCULT.
- 1
[Easy] Algo challenge #4
in Challenges (CTF)
Posted · Edited by Raul
Testat, este in regula, a trecut toate testcase-urile, kudos!
Testat, este in regula, a trecut toate testcase-urile, kudos!
Solutia mea (Golang) este urmatoarea:
* Problema este adaptata de la ceva asemanator gasit pe HackerRank