Jump to content

Andreigl

VIP
  • Posts

    1958
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Andreigl

  1. @Ionut1598,

     

    Nu știu ce-i Mathlab, dar îți las rezolvarea pentru a 2-a problemă mai jos, poți lejer s-o traduci în ce vrei tu:

    Legat de prima problemă, n-ai un exemplu de cod să-mi dai? Presupun că va fi un număr de 13 cifre, fiecare cifră separată printr-o liniuță, nu? Dacă te descurci să o traduci din C++, ți-o pot face și pe aceasta

    #include <iostream>
    #include <algorithm>
    // #include <stdio.h>
    
    void bubbleSort(float Perimetre[], int Elemente)
    {
    	for(int i=0; i<Elemente; i++)
    		for(int j=i; j<Elemente; j++)
    			if (Perimetre[i] > Perimetre[j])
    			{
    				float aux = Perimetre[i];
    				Perimetre[i] = Perimetre[j];
    				Perimetre[j] = aux;
    			}
    }
    
    int main()
    {
    	/*
    		Se citesc de la tastatura diametrele a N cercuri
    		Deci noi trebuie sa citim prima data acel N numar
    	*/
    	int N;
    	std::cin >> N;
    
    
    	/*
    		Vrem sa citim cele N diametre
    		Stim ca diametrul unui cerc este egal cu 2r
    		Deci d = 2r => r = d/2
    	*/
    	float Perimetre[50]; // Consideram ca N va fi mai mic decat 51, aici stocam cele N perimetre ce ni le cere problema
    	float Diametru, Raza, pi = 3.14;
    	for (int i = 0; i < N; i++)
    	{
    		// Aflam raza cercului
    		std::cin >> Diametru;
    		Raza = Diametru / 2;
    
    		/*
    			Calculam:
    				Aria Cercului: pi * r^2
    				Perimetrul Cercului: 2 * pi * r
    			si le afisam in ordinea aceasta
    		*/
    		std::cout << i + 1 << ". " << pi * (Raza * Raza) << " " << 2 * pi * Raza << std::endl;
    		/*
    			Alternativa pentru afisare folosind libraria stdio.h
    			printf("%d. %0.2f %0.2f", i + 1, pi * (Raza * Raza), 2 * pi * Raza);
    		*/
    		Perimetre[i] = 2 * pi * Raza;
    	}
    
    	/*
    		Acum ordonam vectorul cu perimetrele in ordine crescatoare
    		Aici avem mai multe alternative
    		Ori folosim functia sort din libraria algorithm, ori ne facem noi propriul algoritm de sortare
    	*/
    	std::sort(Perimetre, Perimetre + N); // Metoda 1
    	bubbleSort(Perimetre, N); // Metoda 2
    
    	// Afisam perimetrele
    	for (int i = 0; i < N; i++)
    		std::cout << Perimetre[i] << " ";
    }

     

  2. Link: https://www.pbinfo.ro/?pagina=probleme&id=490

     

    #include <iostream>
    
    int main()
    {
        int N, Numar, Index = 1, IndexMax, IndexMin, Max = 0, Min = 39e+69;
        int Array[1001], size = 0, IndexStart, IndexStop;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
        {
            std::cin >> Numar;
            Array[size++] = Numar;
    
            if (Numar > Max)
            {
                Max = Numar;
                IndexMax = Index;
            }
    
            if (Min > Numar)
            {
                Min = Numar;
                IndexMin = Index;
            }
    
            Index++;
        }
    
        Index = 1;
    
        if (IndexMax > IndexMin)
        {
            IndexStart = IndexMin;
            IndexStop = IndexMax;
        }
        else
        {
            IndexStart = IndexMax;
            IndexStop = IndexMin;
        }
    
        for (int i=0; i<size; i++)
        {
            if (Index == IndexStart)
            {
                while (Index != (IndexStop+1))
                {
                    std::cout << Array[i] << " ";
                    Index++;
                    i++;
                }
            }
    
            Index++;
        }
    }

     

  3. Link: https://www.pbinfo.ro/?pagina=probleme&id=487

     

    #include <iostream>
    
    int main()
    {
        int N, size = 0, Numere = 0;
        float Array[205], Ma, Numar, Suma = 0;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
        {
            std::cin >> Numar;
            Array[size++] = Numar;
            Suma += Numar;
        }
    
        Ma = (float)Suma / N;
    
        for (int i=0; i<size; i++)
        {
            if ((float)Array[i] > (float)Ma)
                Numere++;
        }
    
        std::cout << Numere;
    }

     

  4. Link: https://www.pbinfo.ro/?pagina=probleme&id=958

     

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int n, m, P = 0, nr, putere, prefix, sufix;
        long long C = 1, cif;
    
        cin >> n;
    
        m = n;
        cif = 1;
        nr = 9;  
    
        while (n)
        {
            if (nr < n)
            {
                C += nr * cif;
                n -= nr;
            }
            else
            {
                C += n * cif;
                n = 0;
            }
            cif++;
            nr *= 10;
        }
    
        n = prefix = m;
        sufix = 0;
        putere = 1;
    
        while(n / 100)
        {
            sufix = sufix + (n % 10) * putere;
            n /= 10;
            prefix = n / 10;
            putere *= 10;
    
            if (prefix * sufix > P)
                P = prefix * sufix;
        }
    
        cout << P << ' ' << C;
    }

     

  5. Link: https://www.pbinfo.ro/?pagina=probleme&id=986

     

    #include <iostream>
    
    int main()
    {
        int N, Elemente = 0;
        double Array[205], a, b;
    
        std::cin >> N;
    
        for(int i=0; i<N; i++)
            std::cin >> Array[i];
    
        if (Array[0] > Array[N-1])
        {
            a = Array[N-1];
            b = Array[0];
        }
        else
        {
            a = Array[0];
            b = Array[N-1];
        }
    
        for(int i=0; i<N; i++)
        {
            if (Array[i] >= a && Array[i] <= b)
                Elemente++;
        }
    
        std::cout << N - Elemente;
    }

     

     

  6. Link: https://www.pbinfo.ro/?pagina=probleme&amp;id=2858

     

    #include <iostream>
    
    int main()
    {
        int N, Suma_1 = 0, Suma_2 = 0, Suma_3 = 0, Divizibile = 0;
        int Array[205];
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Array[i];
    
    
        for(int i=N-1, j=1, k=1; i>=0; i--, j++, k++)
        {
            std::cout << Array[i] << " ";
    
            if (Array[i] % 2 == 0)
                Suma_1 += Array[i];
    
            if (j % 2 == 0)
                Suma_2 += Array[j-1];
    
            if (Array[i] % 10 == 0)
                Divizibile++;
    
            if (k % 2 != 0 and Array[k-1] % 3 == 0)
                Suma_3 += Array[k-1];
        }
    
        std::cout << "\n" << Suma_1 << "\n" << Suma_2 << "\n" << Divizibile << "\n" << Suma_3;
    }

     

  7. Link: https://www.pbinfo.ro/?pagina=probleme&amp;id=499

     

    #include <iostream>
    
    int main()
    {
        int N, Suma = 0, Suma_2 = 0, Elemente = 0;
        long long int Array[205], aux, aux_2;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Array[i];
    
        for (int i=0; i<N; i++)
        {
            aux = Array[i];
    
            while (aux != 0)
            {
                Suma += aux % 10;
                aux /= 10;
            }
    
            for (int j=i+1; j<N; j++)
            {
             	aux_2 = Array[j];
    
                while (aux_2 != 0)
                {
                	Suma_2 += aux_2 % 10;
                    aux_2 /= 10;
                }
    
                if (Suma == Suma_2)
                	Elemente++;
                
                Suma_2 = 0;
            }
            Suma = 0;
        }
    
        std::cout << Elemente;
    }

     

  8. Link: https://www.pbinfo.ro/?pagina=probleme&amp;id=493

     

    #include <iostream>
    
    int sum_cif(long long int Numar)
    {
        int Suma = 0;
    
        while (Numar != 0)
        {
            Suma += Numar % 10;
            Numar /= 10;
        }
    
        return Suma;
    }
    
    int main()
    {
        int N, Suma_Cifre;
        long long int Array[205], arr[205];
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Array[i];
    
        for (int i=0; i<N; i++)
        {
            Suma_Cifre = sum_cif(Array[i]);
            arr[i] = Array[i] % Suma_Cifre;
            std::cout << arr[i] << " ";
        }
    
        return 0;
    }

     

  9. Link: https://www.pbinfo.ro/?pagina=probleme&amp;id=1860

     

    #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ifstream Read("blackfriday.in");
        std::ofstream Write("blackfriday.out");
    
        int N, Index;
        double Pret_Real[15], Pret_Ieftinire[15], Procent, Max = 0;
    
        Read >> N;
    
        for (int i=0; i<N; i++)
            Read >> Pret_Real[i];
    
        for (int i=0; i<N; i++)
            Read >> Pret_Ieftinire[i];
    
        for (int i=0; i<N; i++)
        {
            Procent = (float)100 - ((100 * Pret_Ieftinire[i]) / Pret_Real[i]);
    
            if (Procent > Max)
            {
                Max = Procent;
                Index = i+1;
            }
        }
    
        Write << Index;
    
        Read.close();
        Write.close();
    
        return 0;
    }

     

  10. Link: https://www.pbinfo.ro/?pagina=probleme&amp;id=498

     

    #include <iostream>
    
    bool CMMDC(int Numar_1, int Numar_2)
    {
        int Divizori_1[205], Divizori_2[205], size_1 = 0, size_2 = 0;
    
        for (int i=1; i<=Numar_1; i++)
        {
            if (Numar_1 % i == 0)
                Divizori_1[size_1++] = i;
        }
    
        for (int i=1; i<=Numar_2; i++)
        {
            if (Numar_2 % i == 0)
                Divizori_2[size_2++] = i;
        }
    
        for (int i=0; i<size_1; i++)
        {
            for (int j=0; j<size_2; j++)
            {
                if (Divizori_2[j] != 1 and Divizori_2[j] == Divizori_1[i])
                    return false;
            }
        }
    
        return true;
    }
    
    int main()
    {
        int N, Array[205], Elemente = 0;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Array[i];
    
        for (int i=0; i<N; i++)
        {
            for (int j=i+1; j<N; j++)
                if (CMMDC(Array[i], Array[j]))
                    Elemente++;
        }
    
        std::cout << Elemente;
    
        return 0;
    }

     

  11.  

    Link https://www.pbinfo.ro/?pagina=probleme&id=495

    bool Prim(long long int Numar)
    {
        if (Numar < 2 or Numar % 2 == 0)
            return false;
    
        if (Numar == 2)
            return true;
    
        for (int i=3; (i*i)<=Numar; i+=2)
        {
            if (Numar % i == 0)
                return false;
        }
    
        return true;
    }
    
    int main()
    {
        int N, size = 0;
        long long int Array[205], Numar;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
        {
            std::cin >> Numar;
            if (Prim(Numar))
                Array[size++] = Numar;
        }
    
        for (int i=(size-1); i>=0; i--)
            std::cout << Array[i] << " ";
    
        return 0;
    }

     

  12. Un număr prim este acel număr care se împarte doar la 2 numere și anume 1 și el însuși.

    Cea mai eficientă metodă pentru a verifica dacă un număr este prim sau nu este următoarea:

    bool isPrim(long long int Numar)
    {
    	if (Numar == 2)
    		return true;
    
    	if (Numar % 2 == 0 or Numar < 2)
    		return false;
    
    	for (int contor = 3; contor * contor <= Numar; contor+=2)
    		if (Numar % contor == 0)
    			return false;
    
    	return true;
    }

     

    Cum este gândită? Ei bine cum am zis, un număr prim are doar 2 divizori. 

    De reținut este că un număr par nu este niciodată un număr prim. Singurul număr par care este prim în același timp este 2. De ce? Ei bine, are doar 2 divizori.

    Deci cum am scăpat de o gamă largă de numere, mai avem decât să facem un începând de la 3, până la radicalul acestuia. Contorul îl însuma din 2 în 2.

    De ce începem de la 3 și nu de la 2? Pentru că nu vrem să împărțim numărul nostru la numere pare. Dacă observați, în for vor fi doar deîmpărțitori impari.

     

    Exemplu cum să apelați funcția de mai sus:

    #include <iostream>
    
    bool isPrim(long long int Numar)
    {
    	if (Numar == 2)
    		return true;
    
    	if (Numar % 2 == 0 or Numar < 2)
    		return false;
    
    	for (int contor = 3; contor * contor <= Numar; contor += 2)
    		if (Numar % contor == 0)
    			return false;
    
    	return true;
    }
    
    int main()
    {
    	int input; std::cin >> input;
    
    	if (isPrim(input))
    		std::cout << "Numarul citit este un numar prim";
    	else
    		std::cout << "Numarul citit nu este un numar prim";
    }

     

  13. Link https://www.pbinfo.ro/?pagina=probleme&id=496

    bool Prim(int Numar_1, int Numar_2)
    {
        int Divizori_1[205], Divizori_2[205], size_1, size_2;
        size_1 = size_2 = 0;
    
        for (int i=2; i<=Numar_1; i++)
        {
            if (Numar_1 % i == 0)
                Divizori_1[size_1++] = i;
        }
    
        for (int i=2; i<=Numar_2; i++)
        {
            if (Numar_2 % i == 0)
                Divizori_2[size_2++] = i;
        }
    
        for (int i=0; i<size_1; i++)
        {
            for (int j=0; j<size_2; j++)
                if (Divizori_2[j] == Divizori_1[i])
                    return false;
        }
    
        return true;
    }
    
    int main()
    {
        int N, Array[205], Elemente = 0;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Array[i];
    
        for (int i=0; i<N; i++)
        {
            if (Prim(Array[i], Array[N-1]))
                Elemente++;
        }
    
        std::cout << Elemente;
    
        return 0;
    }

     

  14. Link https://www.pbinfo.ro/?pagina=probleme&id=383

    Solutia autorului problemei:

    int main(){
    	int n,k,v[200];
    	cin >> k >> n;
    	
    	for(int i = 0 ; i < n ; ++ i)
    		cin >> v[i];
    	for(int i = 0 ; i < n ; ++ i)
    	{
    		int x = v[i] / k * k;
    		int y = x + k;
    		if(v[i] - x <= y - v[i])
    			v[i] = x;
    		else
    			v[i] = y;
    	}
    	for(int i = n - 1 ; i >= 0 ; -- i)
    		cout << v[i] << " ";
    	return 0;
    }

     

  15. Link https://www.pbinfo.ro/?pagina=probleme&id=1893

     

    Problema cere să se afișeze un număr de 9 cifre diferit de cele citite de la tastatură. 

     

    Se poate vedea exemplu din problemă:

     

    4
    123456789 987654321 112345567 200000001
    

    orice număr de 9 cifre diferit de numerele de mai sus este declarat ca și un răspuns câștigător.

     

    Răspunsul oficial arată în felul următor:

    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    
    using namespace std;
    long a,b,c ;
    
    int main()
    {
        srand (time(NULL));
        a = rand()%21623+10000;
        b = rand()%21623+10000;
        c = a*b ;
        cout << c ;
        return 0;
    }

     

    Însă eu n-am stat să-mi bat capul cu așa ceva, așa că soluția mea arată în felul următor:

    int main()
    {
    	printf("112355372");
    }

     

  16. Link https://www.pbinfo.ro/?pagina=probleme&id=551

    int main()
    {
        int N, Elevi, Talent = 0;
        long long int Numar, Max = 0;
    
        bool Clasa = false;
    
        std::cin >> N >> Elevi;
    
        for (int i=0; i<N; i++)
        {
    
            Clasa = false;
    
            for (int i=0; i<Elevi; i++)
            {
                std::cin >> Numar;
    
                if (Numar > Max)
                {
                    Max = Numar;
                    Talent = 1;
                    Clasa = true;
                }
                else
                {
                    if (Clasa != true and Numar == Max)
                    {
                        Talent++;
                        Clasa = true;
                    }
                }
            }
        }
    
        
        std::cout << Max << " " << Talent;
    }
  17. Link https://www.pbinfo.ro/?pagina=probleme&id=1883

    int main()
    {
        int N;
        long long int Array[1005];
    
        bool Found;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Array[i];
    
        for (int i=0; i<N; i++)
        {
            Found = false;
    
            for (int j=i; j<N; j++)
            {
                if (Array[j] > Array[i])
                {
                    Found = true;
                    std::cout << Array[j] << " ";
                    break;
                }
            }
    
            if (Found == false)
                std::cout << -1 << " ";
        }
    }
  18. Link https://www.pbinfo.ro/?pagina=probleme&id=497

    int main()
    {
        int N, X = 0, Aparitie = 0;
        long long int Numar[100005], Majoritar;
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
        {
            std::cin >> Numar[i];
    
            if (X == 0)
            {
                X = 1;
                Majoritar = Numar[i];
            }
    
            if (X != 0)
            {
                if (Majoritar != Numar[i])
                    X--;
                else X++;
            }
        }
    
        for (int i=0; i<N; i++)
        {
            if (Numar[i] == Majoritar)
                Aparitie++;
        }
        
        if (Aparitie > N/2)
            std::cout << "DA " << Majoritar;
        else std::cout << "NU";
    }
  19. Link https://www.pbinfo.ro/?pagina=probleme&id=278

    int main()
    {
        int N, aux, Vector_1[10005], Vector_2[10005], Elemente = 0;
    
        std::cin >> N;
        aux = N;
    
        for (int i=0; i<N; i++)
            std::cin >> Vector_1[i];
    
        std::cin >> N;
    
        for (int i=0; i<N; i++)
            std::cin >> Vector_2[i];
    
        std::sort(Vector_1, Vector_1 + aux, std::greater <int>());
        std::sort(Vector_2, Vector_2 + N, std::greater <int>());
    
        for (int i=0 ;; i++)
        {
            if (Vector_1[i] > Vector_2[0])
                Elemente++;
            else break;
        }
    
        std::cout << Elemente;
    }
  20. Link https://www.pbinfo.ro/?pagina=probleme&id=82

    int main()
    {
        std::ifstream Read ("minmax.in");
        std::ofstream Write ("minmax.out");
        
        int N, Vector[1005], Max = 0, Min = 39e+69;
    
        Read >> N;
    
        for (int i=0; i<N; i++)
        {
            Read >> Vector[i];
    
            if (Vector[i] > Max)
                Max = Vector[i];
    
            if (Vector[i] < Min)
                Min = Vector[i];
        }
    
        Write << Min << " " << Max;
        
        Read.close();
        Write.close();
    }
  21. Link https://www.pbinfo.ro/?pagina=probleme&id=98

    int main()
    {
        std::ifstream Read ("maxim4.in");
        std::ofstream Write ("maxim4.out");
    
        int N, Vector[105], Max = 0, Min = 39e+69, Aparitie = 0;
    
        Read >> N;
    
        for (int i=0; i<N; i++)
        {
            Read >> Vector[i];
    
            if (Vector[i] > Max)
            {
                Max = Vector[i];
                Aparitie = 0;
            }
    
            if (Vector[i] == Max)
                Aparitie++;
        }
    
        Write << Max << " " << Aparitie;
    
        Read.close();
        Write.close();
    }
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.