infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Adrian Diaconu din Februarie 11, 2007, 21:01:14



Titlul: 316 Chiftea
Scris de: Adrian Diaconu din Februarie 11, 2007, 21:01:14
Aici puteţi discuta despre problema Chiftea (http://infoarena.ro/problema/chiftea).


Titlul: Răspuns: 316 Chiftea
Scris de: Bondane Cosmin din Februarie 13, 2007, 17:42:26
Citat
4*(radical(N)+1) (-2, dupa caz).

Asta ce vrea sa spuna? -2-ul din parenteza.


Titlul: Răspuns: 316 Chiftea
Scris de: Stefan Istrate din Februarie 13, 2007, 18:11:09

Asta ce vrea sa spuna? -2-ul din parenteza.

In functie de caz, solutia este 4*(radical(N)+1) sau 4*(radical(N)+1)-2.


Titlul: Răspuns: 316 Chiftea
Scris de: Radu Zernoveanu din Februarie 20, 2007, 15:58:02
unde pot gasi solutia la problema asta? :oops:


Titlul: Răspuns: 316 Chiftea
Scris de: Paul-Dan Baltescu din Februarie 20, 2007, 16:11:34
http://infoarena.ro/winter-challenge-1/solutii


Titlul: Răspuns: 316 Chiftea
Scris de: Alina S din Februarie 22, 2008, 12:50:13
tnx a lot>:D< am luat suta :banana:


Titlul: Răspuns: 316 Chiftea
Scris de: Stefan Gheorghe din Martie 27, 2008, 22:29:31
Cine poate sa imi dea si mie un contra-argument la problema asta? va rog:D:D:D
Cod:
var n,t,i:longint;
    f,g:text;
begin
assign(f,'chiftea.in'); reset(f);
assign(g,'chiftea.out'); rewrite(g);
readln(f,t);
for i:=1 to t do
begin
readln(f,n);
if n=1 then writeln(g,'4')
else if n=2 then writeln(g,'6')
else begin
if n mod 2=0 then n:=n-1;
writeln(g,n+5);
end;
end;
close(f); close(g);
end.


Titlul: Răspuns: 316 Chiftea
Scris de: Bogdan-Alexandru Stoica din Martie 28, 2008, 12:36:15
Cod:
6
4
5
6
10
20
667

raspunsurile corecte fiind:
Cod:
8
10
10
14
18
104


Titlul: Răspuns: 316 Chiftea
Scris de: Anonim din Aprilie 17, 2008, 15:52:22
Pentru exemplul tau mie nu imi da asa ci asa :
Cod:
8
12
10
14
18
104

Pai din 5 patratele ar trebui sa fie [][][][][] si daca numeri laturile sunt 12 aici e greseala mea si cu algoritmul meu iau 0 puncte  .


Titlul: Răspuns: 316 Chiftea
Scris de: Bogdan-Alexandru Stoica din Aprilie 17, 2008, 15:56:20
pentru n = 5 aranjamentul este:
 _  _
|_|_|_
|_|_|_|

deci perimetrul minim este 10.


Titlul: Răspuns: 316 Chiftea
Scris de: Anonim din Aprilie 17, 2008, 16:12:57
Mersi eu credeam ca numai patrate si dreptunghiuri se pot forma . Tanks

Si am o intrebare cum ne dam seama cand acoperim o linie cu patrate si cand acoperim doua . Eu mam gandit ca daca n este par avem mai multe linii si daca e impar numai una  .


Titlul: Răspuns: 316 Chiftea
Scris de: Savin Tiberiu din Aprilie 17, 2008, 16:23:54
poti sa pui mai multe linii si ptr numere impare. De fapt sunt chiar foarte putine numere ptr care pui numai o singura linie. Mai gandestete.


Titlul: Răspuns: 316 Chiftea
Scris de: Anonim din Aprilie 17, 2008, 16:27:07
Multumesc mult de tot ai un + la kama de la mine . Am luat 100 .


Titlul: Răspuns: 316 Chiftea
Scris de: Flavius Anton din Mai 10, 2008, 20:26:19
sa inteleg ca pt n=4 raspunsul este ?10?
                  _ _
pai nu vine  |_|_|
                |_|_|       adica 8?


Titlul: Răspuns: 316 Chiftea
Scris de: Andrei Misarca din Mai 10, 2008, 20:48:04
Pentru 4, 8 da:D


Titlul: Răspuns: 316 Chiftea
Scris de: Flavius Anton din Mai 10, 2008, 21:35:32
pai mai sus fireatmyself a postat altceva... si asta m-a indus in eroare. Multumesc oricum, acum incerc sa o rezolv, nu pare prea grea.


Titlul: Răspuns: 316 Chiftea
Scris de: Danci Emanuel Sebastian din Mai 26, 2008, 14:20:27
cum arata figura pentru n=20 ?  #-o


Titlul: Răspuns: 316 Chiftea
Scris de: gaboru corupt din Mai 26, 2008, 15:28:14
Cod:
         _ _ _ _ _ 
        |_|_|_|_|_|
        |_|_|_|_|_|
        |_|_|_|_|_|
        |_|_|_|_|_|

deci perimetru e 18


Titlul: Răspuns: 316 Chiftea
Scris de: Iancu David Traian din Aprilie 11, 2009, 19:47:31
Am si eu o problema, eu cum as putea afla cat este sqrt(n) fara functia sqrt din cmath? Altfel imi da tle daca folosesc math.h...


Titlul: Răspuns: 316 Chiftea
Scris de: Florian Marcu din Aprilie 11, 2009, 20:32:38
Poti folosi cautarea binara, insa ma indoiesc ca e mai eficienta. ( trebuie sa cauti un nr x a.i. x*x = n ). Problema asta se rezolva cu formula, care e aplicata direct. Deci complexitatea timp e O(1). Nu trebuie sa ai tle-uri.  :)


Titlul: Răspuns: 316 Chiftea
Scris de: Iancu David Traian din Aprilie 25, 2009, 21:24:57
Eu ori nu mă prind de ceva, ori greşesc urât de tot. Adică eu am complexitate O(n), răspunsurile le aflu cu ajutorul formulei, dar tot timpul iau tle. Am încercat chiar şi căutare binară (mulţumesc pentru sfat) dar tot nu merge. Adică dacă trimit o sursă care doar face de t ori sqrt(n), tot iau tle şi cu timpi foarte mari. ](*,) ](*,)


Titlul: Răspuns: 316 Chiftea
Scris de: Iancu David Traian din Aprilie 25, 2009, 21:47:33
Deci azi mi-a fost dat să trăiesc altă dezamăgire legată de folosirea streamurilor. Eu sunt obişnuit să lucrez cu streamuri, deoarece le scriu mai repede faţă de printf, etc, dar am încercat şi cu stdio.h, şi am luat 100.Mi se pare aiurea, având în vedere că auzisem că în standard fstream e mai rapid. :?
(Mă scuzaţi că nu ştiu să editez mesajele, astfel încât postez de două ori consecutiv)


Titlul: Răspuns: 316 Chiftea
Scris de: Paul-Dan Baltescu din Aprilie 25, 2009, 22:15:28
Ai putea sa incerci sa folosesti streamuri, dar in loc de endl sa pui '\n'. S-ar putea sa intre asa. S-a mai discutat despre faptul ca endl goleste buffer-ul si face afisarea sa mearga mai greu.

Pentru ca sa-ti iti editezi mesajele exista un buton "modifica" in coltul dreapta sus al fiecarui mesaj de-al tau.


Titlul: Răspuns: 316 Chiftea
Scris de: Finaru Andrei Emanuel din Februarie 02, 2010, 16:52:22
Am o problema: folosesc o formula, m-am uitat la raspunsuri si am vazut ca e aceeasi, dar iau WA pe toate testele.

In plus, daca folosesc <fstream> si using namespace std in loc de <fstream.h>, in calculatorul meu imi da 4 erori si nu ruleaza, dar pe infoarena ruleaza... tot WA...

Ma poate ajuta cineva si pe mine? Si niste teste m-ar ajuta. Multumesc anticipat!


Titlul: Răspuns: 316 Chiftea
Scris de: Finaru Andrei Emanuel din Februarie 09, 2010, 17:04:16
Am mai lasat problema cateva zile, acum m-am uitat iar pe ea si tot nu pricep ce gresesc. Pe testul postat de fireatmyself imi da bine. M-ar mai ajuta niste teste, sa vad si eu ce nu merge si sa corectez.
P.S. Nu-mi apare butonul "EDIT". O fi de la browser?


Titlul: Răspuns: 316 Chiftea
Scris de: Petrutiu Paul Gabriel din Martie 31, 2013, 18:22:01
imi puteti da niste teste mai complicate ?
ori ce dau eu imi da bn:|


Titlul: Răspuns: 316 Chiftea
Scris de: Curiman Andrei din Noiembrie 15, 2014, 09:36:10
de ce am luat doar 50 de puncte la sursa asta(http://www.infoarena.ro/job_detail/1263790?action=view-source)

#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("chiftea.in");
ofstream fout ("chiftea.out");
int main()
{
    int t,n,sol;
    fin>>t;
    for(int i=t;i>=1;i--)
    {
        fin>>n;
        if(n==1)
            fout<<"4"<<'\n';
        if(n==2)
            fout<<"6"<<'\n';
        if(n==3)
            fout<<"8"<<'\n';
        if(n>=4)
        {
            int x=sqrt(n);
                sol=x*4;
            if(x*x+x>=n and x*x!=n)
                sol+=2;
            if(x*x+x<n)
                sol+=4;
        }
        fout<<sol<<'\n';
    }

    return 0;
}


Titlul: Răspuns: 316 Chiftea
Scris de: George Marcus din Noiembrie 15, 2014, 12:48:21
sqrt poate avea erori de precizie. Daca calculezi sqrt(4) poate sa iti rezulte 1.999999 care devine 1 cand ii faci cast la int.


Titlul: Ce nu e bine ?
Scris de: Pop Darian din Februarie 25, 2015, 19:54:22
 Am studiat vreo 20-30 de cazuri si pentru toate codul de mai jos era bun, eu am gasit trei cazuri (cand e patrat perfect, cand nu e patrat perfect si e impar, cand e patrat perfect si e par):

#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("chiftea.in");
ofstream g("chiftea.out");
int t,x,i;
int main()
{
    f>>t;
    for (i=1;i<=t;i++)
    {f>>x;
    if (sqrt(x)==(int)(sqrt(x)))
        g<<x-(pow(sqrt(x)-2,2))+4<<"\n";

    if (sqrt(x)!=(int)(sqrt(x))&&x%2==0)
        g<<x+4<<"\n";

    if (sqrt(x)!=(int)(sqrt(x))&&x%2==1)
        g<<x+5<<"\n";
    }
    return 0;
}
  ](*,)


Titlul: Răspuns: 316 Chiftea
Scris de: Popa Cezar Andrei din Februarie 21, 2016, 22:50:16
 :readthis: