Jump to content
Hostul a fost schimbat. Daca vedeti serverul offline readaugati rpg.b-zone.ro sau 141.95.124.78:7777 in clientul de sa-mp ×

Probleme pbinfo


Andreigl
 Share

Recommended Posts

E cineva pe aici ce rezolvă probleme pe pbinfo când plictiseala îl depășește? PM privat atunci :)

 

A reușit cineva să obțină 100 de puncte la problema https://www.pbinfo.ro/?pagina=probleme&id=1192 ?

 

Am creat următoarea chinezărie, însă chiar nu-mi pot da seama cum altcumva să rezolv problema pt. a „optimiza” programul (Apelurile de functii sunt 0, deci nu contează că am creat multe funcții)

 

@FnZ, mi silă să-ți dau PM. Ce zici? Sau esti Mate-Info dgb? ?

 


#include <iostream>
#include <fstream>

using namespace std;

void swap(int *X, int *Y)
{
    int Temp = *X;
    *X = *Y;
    *Y = Temp;
}

void bubbleSort(int Array[], int X)
{
    for (int i=0; i<X; i++)
    {
        for (int j=0; j<X-i-1; j++)
        {
            if (Array[j] < Array[j+1])
                swap(&Array[j], &Array[j+1]);
        }
    }
}

void Conditia_1(int Array[], int X, ofstream &WriteToFile)
{
    for (int i=0; i<X; i++)
    {
        WriteToFile << Array[i] << " ";
        cout << Array[i] << " ";
    }
}

void Conditia_2(int Array[], int X, ofstream &WriteToFile)
{
    cout << endl;
    WriteToFile << endl;

    for (int i=0; i<X; i++)
    {
        if (i == 0)
        {
            cout << "0" << " ";
            WriteToFile << "0" << " ";
            continue;
        }

        if (i == X)
        {
            cout << "0" << " ";
            WriteToFile << "0" << " ";
            break;
        }

        if ((float)(Array[i-1] + Array[i+1])/2 == Array[i])
        {
            WriteToFile << "1" << " ";
            cout << "1" << " ";
        }
        else
        {
            WriteToFile << "0" << " ";
            cout << "0" << " ";
        }
    }
}

void printArray(int Array[], int X, ofstream &WriteToFile, void (*calledFunc)(int [], int, ofstream &))
{
    return (*calledFunc)(Array, X, WriteToFile);
}

int main()
{
    ifstream ReadFromFile ("arhitectura2.in");
    ofstream WriteToFile ("arhitectura2.out");

    long long int X, Numar;
    // cin >> X;
    ReadFromFile >> X;

    int Array[X];

    for (int i=0; i<X; i++)
    {
        // cin >> Numar;
        ReadFromFile >> Numar;
        Array[i] = Numar;
    }

    bubbleSort(Array, X);
    (*printArray)(Array, X, WriteToFile, Conditia_1);
    (*printArray)(Array, X, WriteToFile, Conditia_2);

    ReadFromFile.close();
    WriteToFile.close();
}

Link to comment
Share on other sites

Am renunțat la bubbleSort, în schimb folosind funcția sort din <algorithm>

 

100 de puncte gratuite here they are!

 

image.thumb.png.143b2a4afa6108442ca75cf85ef671d4.png

 

#include <fstream>
#include <algorithm>

using namespace std;

void Conditia_1(int Array[], int X, ofstream &WriteToFile)
{
    for (int i=0; i<X; i++)
    {
        WriteToFile << Array[i] << " ";
    }
}

void Conditia_2(int Array[], int X, ofstream &WriteToFile)
{
    WriteToFile << "\n";

    for (int i=0; i<X; i++)
    {
        if (i == 0)
        {
            WriteToFile << "0" << " ";
            continue;
        }

        if (i == X)
        {
            WriteToFile << "0" << " ";
            break;
        }

        if ((float)(Array[i-1] + Array[i+1])/2 == Array[i])
        {
            WriteToFile << "1" << " ";
        }
        else
        {
            WriteToFile << "0" << " ";
        }
    }
}

void printArray(int Array[], int X, ofstream &WriteToFile, void (*calledFunc)(int [], int, ofstream &))
{
    return (*calledFunc)(Array, X, WriteToFile);
}

int main()
{
    ifstream ReadFromFile ("arhitectura2.in");
    ofstream WriteToFile ("arhitectura2.out");

    long long int X, Numar;
    ReadFromFile >> X;

    int Array[X];

    for (int i=0; i<X; i++)
    {
        ReadFromFile >> Numar;
        Array[i] = Numar;
    }

    sort (Array, Array+X, greater<int>());
    (*printArray)(Array, X, WriteToFile, Conditia_1);
    (*printArray)(Array, X, WriteToFile, Conditia_2);

    ReadFromFile.close();
    WriteToFile.close();
}

Link to comment
Share on other sites

@FnZ

 

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

 

Știi s-o faci?

 

Mai jos am făcut același lucru, însă nu-mi pot da seama ce rost are prima variabilă citită din enunț, așa că am sărit peste ea. Probabil de aia primesc doar 10 puncte?

https://pastebin.com/mAfBtS9X 

Link to comment
Share on other sites

@shanker'

Proprietatea sirului fibonacci

 

Spre exemplu ai de calculat suma termenilor cu k = [1, 3] atunci vom avea fibo[] = {1, 1, 2, 3, 5, 8, 13, ...}.

Stim ca suma primelor k numere = fibo[k + 2] - 1.

 

Pe exemplul dat k = [1, 3] => S = 4, dar S = fibo[3 + 2] - 1 = 4.

Pentru un alt exemplu k = [3, 5] => S = 10, dar suma aceasta poate fi scrisa ca S = (fibo[5 + 2] - 1) - sigma(3 - 1), unde cu sigma am notat o functie pentru care sigma(n) = fibo[n + 2] - 1.

 

Generalizand pentru un a si b ales arbitrar avem urmatoarea formula de calculare a sumei

S(a, b) = (fibo[b + 2] - 1) - fibo[a + 1] - 1, astfel obtinandu-se

S(a, b) = fibo[b + 2] - fibo[a + 1]

 

 

Atentie: Trebuie sa implementezi niste vectori care iti vor retine cifrele pentru ca daca trebuie sa calculezi pana la 1002-lea termen atunci nu se incadreaza in tipul de date long long sau int.

 

Edited by FnZ
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • 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.