PCLP Laborator02: Problemset (extra)

Probleme extra propuse pentru PCLP Laborator02.

  1. Pentru un număr n citit de la tastatură, afișați numărul m format din cifrele de rang par ale acestuia. Rangurile se numerotează de la dreapta la stanga cu 1, 2, 3,... .

    n = 695643232
        x9x6x3x3x
    m = 9633
    
  2. Calculează cel mai mare divizor comun pentru două numere naturale nenule citite de la tastatură folosind algoritmul lui Euclid prin scăderi repetate.

  3. De la tastatură se introduc n numere citite pe rând. Găsiţi cel mai mare divizor comun al acestor n numere, fără a folosi vectori.

    Hint: Proprietate matematică.

  4. Fie ecuația x1^3 + x2^3 + x3^3 = 0. Găsiți toate valorile întregi pentru x1, x2, x3 din intervalul [-50, +50] care sunt soluții pentru ecuatia data.

    Hint: Gândiți ca un programator, nu ca un matematician!

    Follow-up: x1^3 + x2^3 + x3^3 + x4^3 +x5^3 = 0. Încercați să faceți eficient!

  5. Se dă N și N puncte în plan (date prin coordonatele reale x şi y), citite de la tastatură, care reprezintă vârfurile unui poligon convex. Punctele sunt date în ordine trigonometrică (sau invers trigonometrică) să se calculeze: perimetrul poligonului convex aria poligonului convex.

    Hint: Google it or check infoarena

  6. Rezolvați problema cadrane de pe Hackerrank.

  7. Rezolvați problema swap-digits de pe Hackerrank.

  8. Rezolvați problema divisors de pe Hackerrank.

  9. Rezolvați problema hash de pe Hackerrank.

  10. Rezolvați problema șir de pe Hackerrank.

  11. Se introduce de la tastatură un număr natural n urmat de n numere întregi. Să se afișeze cele mai mici două numere și cele mai mari două numere fără a stoca toate numerele în memorie.

    Exemplu

    • Input
    8
    5 6 12 -4 7 88 1 15
    
    • Output
    -4 1 15 88
    
  12. Se citește de la tastatură un număr natural n diferit de 1. Să se calculeze ⌊log₂(n)⌋ și ⌊lg(n)⌋ fără funcții din math.h.

    Exemplu

    • Input
    602
    
    • Output
    log2(602) = 9
    log10(602) = 2
    
  13. Se citește de la tastatură, cifră cu cifră un CNP cu o dată existentă (fără 29 februarie, 32 decembrie, etc). Verificați dacă CNP-ul dat este valid.

    Exemplu Valid

    • Input
    2720123439821
    
    • Output
    VALID
    
    • Explicatie: Cifra de verificare pentru CNP-ul introdus este 1.

    Exemplu Invalid

    • Input
    1620513231502
    
    • Output
    INVALID
    
    • Explicatie: Cifra de verificare pentru CNP-ul introdus nu e 2.

    Hint : Algoritm calculare CNP

  14. Se introduce de la tastatură un număr natural n urmat de n perechi de puncte pe un plan 2D de forma x y. Să se afișeze pentru fiecare dintre puncte sinusul, cosinusul, tangenta și cotangenta pentru unghiul format între axa Ox și dreapta definită de punct și origine. Singurele funcții din math.h permise sunt sqrt() si pow().

    Exemplu

    • Input
    3
    1 0
    2 2
    -2 -2
    
    • Output
    (1, 0): 0, 1, 0, inf
    (2, 2): 0.7, 0.7, 1, 1
    (-2, -2): -0.7, -0.7, 1, 1
    
  15. Boltz. Se citește de la tastatură un număr de jucători n, un număr natural m, și o cifră c. Cei n jucători iau rânduri și se joacă boltz de la 1 până la m. Regulile sunt simple: fiecare jucător spune numărul la care s-a ajuns, dar dacă acesta este divizibil sau conține cifra c jucătorul spune Boltz și se schimbă ordinea jucătorilor, următorul număr fiind cel de după cel sărit.

    Exemplu

    • Input:
    3 10 7
    
    • Output
    P1 - 1
    P2 - 2
    P3 - 3
    P1 - 4
    P2 - 5
    P3 - 6
    P1 - Boltz
    P3 - 8
    P2 - 9
    P1 - 10
    
    • Explicatie: Când se ajunge la numărul 7, in loc de 7 se spune Boltz, se inversează ordinea jucătorilor, deci în loc de jucătorul 2 urmează 3, iar el zice 8.
  16. Se introduce la tastatură un număr natural n. Să se genereze un brad format din n triunghiuri, fiecare triunghi i având înăltimea de i + 2, iar fiecare linie j din triunghi are j + 1 caractere de "*", i = 0, 1, ..n - 1, j = 0, 1, ..,i + 1.

    Exemplu

    • Input
    4
    
    • Output
    *
    **
    *
    **
    ***
    *
    **
    ***
    ****
    *
    **
    ***
    ****
    *****