Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum reactivez Google Maps?

Conectare tableta X220la Tv

Femeile tinere nu mai vor sa munc...

La mulți ani @un_dac!
 La multi ani de Sfantul Gheorghe&...

Job - Facultate sau certificare

Deadpool & Wolverine (2023)

sistem hibrid eoliana + panouri +...
 Outlook e muta pe Android

Constructie Mun. Iasi. Casa P+1.

Cum mai rezolvati cu chiriasii ra...

Tastatura si mouse cu baterie int...
 AC Gree duce la palpait de becuri

Sfat / recomandare construire aco...

Cablu analog vs digital

Ce valoare stabiliti la RSSI la u...
 

Am nevoie de ajutor la o problema in c++

- - - - -
  • Please log in to reply
4 replies to this topic

#1
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
Va rog frumos sa ma ajutati. Deci trebuie sa fac aceasta problema si nu imi iese : http://prntscr.com/hykn95
Am incercat sa fac ceva dar nu merge de fiecare data :

	short n,m,k,s=0;
	ifstream f("brazi.in");
	ofstream g("brazi.out");
	f >> n >>m>>k;
   
	while(n > 0 && m > 0){
		m=m-2;
		n=n-k+2;
		s++;
	}
	g << s;
	f.close();
	g.close();


Problema nu este tema ci este o varianta de la un concurs judetean pe care ma chinui sa o rezolv deci m-ar ajuta daca ati venii cu niste idei, multumesc!

#2
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,946
  • Înscris: 24.04.2013
Dupa mine e o problema mai mult de matematica decat de programare. Asa la ceas de seara (deci poate ma insel), mi se pare ca pentru a avea o repartizare conform cerintelor problemei cu s brazi e necesar si suficient sa fie indeplinite simultan conditiile:
  • k >= 2
  • floor (m / 2) >= s >= ceil ((m + n) / k)
(Am impresia ca a doua conditie o implica pe prima, dar oricum k trebuie testat sa nu fie 0 ca altfel nu se poate face calculul din ultima expresie.)
Odata ce se verifica aceste conditii (a doua cu s eliminat sa ramana doar termenii extremi), cum problema cere s minim rezultatul este ceil ((m + n) / k).

#3
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,025
  • Înscris: 24.02.2006
algoritmul tau nu detecteaza situatia in care globurile nu pot fi aranjate conform cerintelor. prima conditie ( floor (m / 2) >= s ) este cea care determina daca exista sau nu solutie.

Edited by _Smiley_, 10 January 2018 - 20:19.


#4
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,946
  • Înscris: 24.04.2013
Algoritmul initiatorului pune totdeauna doar cate 2 globuri argintii si restul aurii (exceptie ultimul brad pe care il face varza Posted Image), desi in functie de valori pentru a obtine numarul minim de brazi poate fi nevoie sa puna mai mult de atat, chiar in toti brazii. De exemplu (n, m, k) = (2, 10, 6) se rezolva cu 2 brazi, cate 5 globuri argintii + 1 auriu in fiecare brad.

Edited by sags, 10 January 2018 - 20:40.


#5
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
"Nu mai mult de K globulete pentru fiecare brad" => cel putin (N + M) / K brazi
"Cel putin 2 sa fie argintii" => cel mult M / 2 brazi

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate