Andreigl Posted April 11, 2019 Share Posted April 11, 2019 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 More sharing options...
Andreigl Posted April 12, 2019 Author Share Posted April 12, 2019 Am renunțat la bubbleSort, în schimb folosind funcția sort din <algorithm> 100 de puncte gratuite here they are! #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 More sharing options...
Andreigl Posted April 17, 2019 Author Share Posted April 17, 2019 @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 More sharing options...
FnZ Posted August 14, 2019 Share Posted August 14, 2019 (edited) @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 August 14, 2019 by FnZ 1 Link to comment Share on other sites More sharing options...
Jackson Brooklyn Posted September 27, 2019 Share Posted September 27, 2019 Topic inactiv. Link to comment Share on other sites More sharing options...
Recommended Posts