infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Dan-Leonard Crestez din Martie 08, 2004, 19:50:56



Titlul: 001 CMMDC
Scris de: Dan-Leonard Crestez din Martie 08, 2004, 19:50:56
Aici puteţi discuta despre problema CMMDC (http://infoarena.ro/problema/cmmdc).


Titlul: Răspuns: 001 CMMDC
Scris de: Nica Florin din Octombrie 22, 2006, 20:55:14
As vrea si yo putin ajutor la problema asta!! Vreau doar sa stiu conditiile pe care pot sa le folosesc  sau metoda de rezolvare.Parca era Algoritmul lu Euclid sau Euler dar nu mai stiu sigur!! Pls ma ajuta  cineva???


Titlul: Răspuns: 001 CMMDC
Scris de: Tandrau Alexandru din Octombrie 22, 2006, 21:06:21
http://info.devnet.ro/articole.php?page=art&art=26


Titlul: Răspuns: 001 CMMDC
Scris de: Tabara Mihai din Octombrie 22, 2006, 21:10:03
sa ai grija ca daca numerele sunt prime intre ele nu afisezi 1 ci 0.
( altfel iei numai 50 de puncte ) :ok:

Spor. :thumbup:


Titlul: Răspuns: 001 CMMDC
Scris de: Luca Eduard din Decembrie 11, 2006, 17:56:15
am trimis raspunsul la CMMDC (care merge la mine pe calculator) si... mia dat eroare: raspuns gresit... 0 puncte. ma poate ajuta cineva?


Titlul: Răspuns: 001 CMMDC
Scris de: Tomescu Alin din Decembrie 11, 2006, 22:09:42
Cred ca ori sunt foarte obosit in seara asta ori evaluatorul are probleme serioase...
Cam asa am facut programul...
Cod:
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
    long a,b,m,n,r;
   
    fstream fin("cmmdc.in", ios::in);
    fstream fout("cmmdc.out", ios::out);
    fin >> a;
    fin >> b;
    a = labs (a);
    b = labs (b);
   
    m = a;
    n = b;
    do
    {
       r = m % n;
       m = n;
       n = r;
    }
    while (r);
   
    if (m == 1)
    {
        fout << 0;
        fout.close();
        fin.close();
        return 0;
    }
    else /*if (m!=1) */
    {
        fout << m;
        fout.close();
        fin.close();
        return 0;
    }
}

Programul primeste 0 puncte insa chestia interesanta e ca daca acel bloc if-else il scot si il las pur si simplu sa-l scrie pe m in fisier primeste 50 de puncte, si mai mult decat atat daca verific doar situatia cand m==1 si scriu 0 in fisier primeste tot 50 de puncte insa de la testele la care a esuat anterior culmea e ca daca le las pe amandoua if m == 0 then... else... nu merge.

Spuneti-mi si mie ce fac gresit?  ](*,)


Titlul: Răspuns: 001 CMMDC
Scris de: Luca Eduard din Decembrie 11, 2006, 22:38:09
Cred ca ori sunt foarte obosit in seara asta ori evaluatorul are probleme serioase...
Cam asa am facut programul...
Cod:
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
    long a,b,m,n,r;
   
    fstream fin("cmmdc.in", ios::in);
    fstream fout("cmmdc.out", ios::out);
    fin >> a;
    fin >> b;
    a = labs (a);
    b = labs (b);
   
    m = a;
    n = b;
    do
    {
       r = m % n;
       m = n;
       n = r;
    }
    while (r);
   
    if (m == 1)
    {
        fout << 0;
        fout.close();
        fin.close();
        return 0;
    }
    else /*if (m!=1) */
    {
        fout << m;
        fout.close();
        fin.close();
        return 0;
    }
}

Programul primeste 0 puncte insa chestia interesanta e ca daca acel bloc if-else il scot si il las pur si simplu sa-l scrie pe m in fisier primeste 50 de puncte, si mai mult decat atat daca verific doar situatia cand m==1 si scriu 0 in fisier primeste tot 50 de puncte insa de la testele la care a esuat anterior culmea e ca daca le las pe amandoua if m == 0 then... else... nu merge.

Spuneti-mi si mie ce fac gresit?  ](*,)

Exista o posibilitate mult mai simpla...
Eu l-am facut dar imi da doar 50 de puncte...

Cod:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(void) {
 int a,b,x;
 FILE *in,*out;
 in=fopen("cmmdc.in", "rt");
 out=fopen("cmmdc.out", "w+");
 fscanf(in,"%d",&a);
 fscanf(in,"%d",&b);
 while (a!=b) {
 x=abs(a-b);
 b=a;
 a=x;
 }
 //if (a==1) a=0;
 if (a!=1) fprintf(out,"%d",a);
 return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Decembrie 12, 2006, 09:54:57
Aveti dreptate... este o problema cu evaluatorul. Probabil se va rezolva in curand, aveti rabdare :peacefingers:


Titlul: Răspuns: 001 CMMDC
Scris de: Tomescu Alin din Decembrie 12, 2006, 15:39:06
Aveti dreptate... este o problema cu evaluatorul. Probabil se va rezolva in curand, aveti rabdare :peacefingers:

WOW, chiar eram socat... evaluatorul are probleme doar in cazul programului asta (CMMDC) sau cu toate programele face fite?


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Februarie 20, 2007, 21:37:36
Eu cred ca tu nu ai inteles exact diferenta intre notiunile de "numar prim" si "numere prime intre ele".

Un numar este prim daca este mai mare sau egal cu 2 si are doar 2 divizori, pe 1 si pe el insusi.

Doua numere sunt prime intre ele daca cmmdc-ul lor este egal cu 1.

Daca a = 1, b = 1, cmmdc(a, b) = 1, deci a si b sunt prime intre ele. Prin urmare trebuie afisat 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Martie 02, 2007, 15:56:24
am incercat si algoritmul lui euclid, si cel prin diferenta.. si primesc tot 50 de puncte..aiurea


Titlul: Răspuns: 001 CMMDC
Scris de: Codrea Marcel din Martie 02, 2007, 16:09:13
Cod:
    * pe prima linie: cel mai mare divizor comun pentru a si b. Daca a si b sunt numere prime intre ele, atunci se va tipari 0
Tiparesti 0 daca cmmdc este 1 ?


Titlul: Răspuns: 001 CMMDC
Scris de: Bondane Cosmin din Martie 02, 2007, 16:37:35
Da


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Martie 27, 2007, 18:59:12
in sfarsit.. am luat si eu 100 :))) :winner1:


Titlul: Răspuns: 001 CMMDC
Scris de: Sachelarie Bogdan din Martie 31, 2007, 23:23:52
            Merita in general, implementarea binara la cmmdc?


Titlul: Răspuns: 001 CMMDC
Scris de: Tabara Mihai din Martie 31, 2007, 23:59:25
            Merita in general, implementarea binara la cmmdc?

Depinde de limite de timp.Inca nu am intalnit o problema in care sa faca diferenta implementarea cmmdc-ului binar.Spre exemplu, la Copaci, nu e absolut nici o diferenta de timp daca fac un Cmmdc normal sau unul binar, dar oricum, probabil, la o problema cu limita de timp stransa, se vor vedea ceva diferente, desi ma indoiesc ca ar fi prea mari.  ???

 :ok:


Titlul: Răspuns: 001 CMMDC
Scris de: Taloi Bogdan Cristian din Octombrie 05, 2007, 19:32:00
Care e problema? :'(
Imi da eroare de compilare! :'(
Sunt f.incepator in C++,in Pascal am facut-o de 100! :'(
 :readthis:

Cod:
#include<iostream>
#include<fstream>
void main()
{long a,b,c;
 fstream f;
 f.open("cmmdc.in",ios::in);
f>>a>>b;
f.close();

CENZURAT

f.open("cmmdc.out",ios::out);
f<<c<<endl;
f.close();
}


Titlul: Răspuns: 001 CMMDC
Scris de: Bogdan-Alexandru Stoica din Octombrie 05, 2007, 19:42:47
InfoArena nu foloseste BORLAND C, ci GNU GCC/G++, care au suferit modificari semnificative fata de primul compilator.

In primul rand, tipul functiei main trebuie sa fie int si trebuie sa returneze 0.
Cod:
int main()
{
   /*cod sursa*/
   return 0;
}

In al doilea rand, gcc si g++ nu au bibliotecile fstream.h si iostream.h. Foloseste stdio.h pentru citire (scanf/fscanf, prinft/fprintf). Mai multe informatii gasesti aici (http://infoarena.ro/documentatie/evaluator).


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Octombrie 05, 2007, 21:09:54
In al doilea rand, gcc si g++ nu au bibliotecile fstream.h si iostream.h. Foloseste stdio.h pentru citire (scanf/fscanf, prinft/fprintf). Mai multe informatii gasesti aici (http://infoarena.ro/documentatie/evaluator).
Nu primesti eroare din cauza asta... eu am trimis multe surse cu fstream si iostream.. si merge...


Titlul: Răspuns: 001 CMMDC
Scris de: Bogdan-Alexandru Stoica din Octombrie 05, 2007, 23:08:20
imi cer scuze, inseamna ca la punctul 2 am vorbit fara acoperire. nu testasem inainte.  :-'


Titlul: Răspuns: 001 CMMDC
Scris de: Taloi Bogdan Cristian din Octombrie 06, 2007, 13:18:18
 Multumesc de ajutor! :winner1: :winner2: :winner3: :banana: :ok: Mi-a dat


Titlul: Răspuns: 001 CMMDC
Scris de: Adrian Diaconu din Octombrie 06, 2007, 23:22:52
Data viitoare nu mai posta toata sursa pe forum.


Titlul: Răspuns: 001 CMMDC
Scris de: Popescu Marius din Decembrie 19, 2007, 20:50:16
eu folosesc borland c++ si cand trimit problema facuta cu algoritmul lui euclid nu imi da nici un punct pls help me


Titlul: Răspuns: 001 CMMDC
Scris de: Tabara Mihai din Decembrie 19, 2007, 21:04:21
eu folosesc borland c++ si cand trimit problema facuta cu algoritmul lui euclid nu imi da nici un punct pls help me
da ce iei ? WA ? S-ar putea sa apara probleme din cauza compilatorului. Incearca sa treci pe ceva mai nou.  :thumbup: Borlandul mai traieste doar pentru OJI, in rest nu cred ca il mai foloseste prea multa lume.

Spor !


Titlul: Răspuns: 001 CMMDC
Scris de: Popescu Marius din Decembrie 19, 2007, 21:27:00
Vreau si eu un sfat ce program sa folosesc (sa fie ptr unn incepator ) si care sa mearga pe infoarena adica sa obtin si eu puncte la problemele astea usoare . Eu ma pricep doar in Borland C++ ca asa am invatat la scoala. PLs HelP me  :-k :-k


Titlul: Răspuns: 001 CMMDC
Scris de: Tabara Mihai din Decembrie 19, 2007, 21:35:59
Vreau si eu un sfat ce program sa folosesc (sa fie ptr unn incepator ) si care sa mearga pe infoarena adica sa obtin si eu puncte la problemele astea usoare . Eu ma pricep doar in Borland C++ ca asa am invatat la scoala. PLs HelP me  :-k :-k

Spre exemplu eu folosesc Dev-ul care e foarte usor de utilizat.Bine ca asta nu e compilator, e un IDE, dar il folosesc de cand am intrat in liceu si nu am avut probleme.Doar sa vina ideile la prolbeme si sa mearga implementarea ca de restul se ocupa Dev-ul. :D

Ai aici o pagina de unde poti sa il downloadezi: Dev-C++ (http://www.softpedia.com/get/PORTABLE-SOFTWARE/Programming/Windows-Portable-Applications-Dev-C-Portable.shtml)


Titlul: Răspuns: 001 CMMDC
Scris de: Filip Cristian Buruiana din Decembrie 19, 2007, 22:03:22
Parerea mea e ca cel mai bine incerci cu RHIDE + Gnu, are un debugger bine pus la punct si seamana foarte mult ( la interfata ma refer ) cu Borland C++, deci nu o sa fie grea acomodarea.
Detalii despre instalare gasesti aici:
http://infoarena.ro/DJGPP-instalarea-de-la-A-la-Z.



Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Decembrie 19, 2007, 22:05:49
Eu iti recomand sa te obisnuiesti fara debug :).


Titlul: Răspuns: 001 CMMDC
Scris de: Bogdan-Cristian Tataroiu din Decembrie 20, 2007, 08:19:08
Eu iti recomand sa te obisnuiesti fara debug :).
si pe linux :P Se intampla ca un program sa mearga pe windows si pe linux sa dea Runtime Error ca windowsu mai trece cu vederea cateva probleme de memorie :P


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Ianuarie 24, 2008, 19:33:56
Problema asta nu e grea :P


Titlul: Răspuns: 001 CMMDC
Scris de: Rosu Alexandru din Februarie 10, 2008, 20:10:14
nu stiu de ce nu imi ia decat 20 de puncte ... se pot vedea valorile introduse la teste? :aha: :aha: :-k


Titlul: Răspuns: 001 CMMDC
Scris de: Florian Marcu din Februarie 10, 2008, 20:26:14
Am impresia ca la problema asta, se arata valorile in borderoul de evaluare.  :ok: De regula, nu se arata valorile din intrare. Pt mai multe detalii, citeste Documentatia. Spor!  :thumbup:


Titlul: Răspuns: 001 CMMDC
Scris de: Dumitrescu Iustin din Martie 04, 2008, 21:56:22
ma fratilor....ajutatima si pe mine....zicetimi si mie va rog dak stiti cumva de ce imi da eroare de compilare???:|


Titlul: Răspuns: 001 CMMDC
Scris de: Adrian Diaconu din Martie 04, 2008, 22:03:51
Variabilele pe care le folosesti trebuie declarate.
Pune si tu prin sursa
Cod:
int a,b;

Dar nu inteleg, tu nu ai compilator la tine pe calculator, nu testezi macar sa iti compileze inainte de a trimite ?


Titlul: Răspuns: 001 CMMDC
Scris de: bosnea raul eduard din Martie 13, 2008, 20:29:26
imi expica si mie kreva cum se face k nu Euclid prin scaderi repetate ia 0 puncte? :o ](*,) ](*,)


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Martie 13, 2008, 21:02:20
Se ia 100 si cu algoritmul cu scaderi repetate, gresesti tu ceva pe acolo.
Citeste indicatiile de rezolvare pt problema din arhiva educationala http://infoarena.ro/problema/euclid2 (http://infoarena.ro/problema/euclid2) sa te lamuresti cum e cu algoritmul lui Euclid.


Titlul: Răspuns: 001 CMMDC
Scris de: alex puscas din Aprilie 20, 2008, 17:55:41
ma puteti ajuta si pe mine?...am incercat cu functii si recursivitate...fara functii shi fara recursivitate...am incercat cu algoritmul lui euclid...de ce imi da numai 50 de puncte?


Titlul: Răspuns: 001 CMMDC
Scris de: Bogdan-Alexandru Stoica din Aprilie 20, 2008, 18:20:43
probabil nu ai citit atent enuntul:

Citat
Daca a si b sunt numere prime intre ele, atunci se va tipari 0.

 :thumbup:


Titlul: Răspuns: 001 CMMDC
Scris de: Pascu Vlad din Mai 13, 2008, 16:04:42
am incercat urmatoarea solutie:
Cod:
#include <fstream>
using namespace std;

int main(){
fstream in("fractii.in", ios::in); int n = 10;
in >> n; in.close();
long long rezultat = 1;
for(int i = 1; i < n; i++)
for(int j = i + 1; j <= n; j++){
int x = i, y = j; 
while(x != y){ 
if(x > y) x -= y; 
else y -= x; 
}
            if(x == 1) rezultat += 2;
}
fstream out("fractii.out", ios::out);
out << rezultat;
}

Problema e ca iau 10 puncte. Imi depaseste timpul la 9 teste ( primul si 3 - 10). Ceea ce consider eu ciudat e ca dak generez TOATE variantele imi depaseste testele 2 -10 si merge bine la primul. Acum e la mintea cocosului ca ceea ce se vede mai sus e mai rapid decat a genera toate fractiile posibile. Deci de ce imi depaseste pana si la primul unde celalalt a mers?


Titlul: Răspuns: 001 CMMDC
Scris de: Savin Tiberiu din Mai 13, 2008, 16:12:31
Postul tau nu e unde trebuie. Acest topic este ptr problema CMMDC, sursa ta e la problema Fractii. Citeste topicul de la Fractii si ar trebui sa iti dai seama de ce iei TLE.


Titlul: Răspuns: 001 CMMDC
Scris de: Tansanu Florin din Noiembrie 29, 2008, 16:36:28
Cod:
#include<fstream.h>
ifstream fin("cmmdc.in");
ofstream fout("cmmdc.out");

int main()
{
int a, b;
fin>>a>>b;
if(a==0)
return b;
if(b==0)
return a;
while(a!=0)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
}
Ce am gresit...nu mi se afiseaza nimic...nici nu am mai trimis fisierul. :-s


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Noiembrie 29, 2008, 16:52:00
Nu iti afiseaza nimic pentru ca nu folosesti nicio instructiune de afisare. Pentru a afisa ceva in fisierul cmmdc.out trebuie sa scrii:

Cod:
fout << variabila;

Observ ca tu returnezi din main valoarea a. Probabil ca vrei sa o scrii, nu sa o returnezi. In principiu, functia main ar trebui sa iti intoarca intotdeauna cand codezi probleme valoarea 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Tansanu Florin din Noiembrie 29, 2008, 17:05:54
Am incercat sa folosesc o functie, dar tot nu-mi iese...
Cod:
#include<fstream.h>
ifstream fin("cmmdc.in");
ofstream fout("cmmdc.out");
int cmmdc(int a, int b)
{
if(a==0)
return b;
if(b==0)
return a;
while(a!=0)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
void main()
{
int a, b, x;
fin>>a>>b;
x=cmmdc(a,b);
fout<<x;
}
Nu imi afiseaza nimic....si nu am nici o eroare:(


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Noiembrie 29, 2008, 18:52:13
In primul rand dupa cum ti s-a mai explicat si la problema A+B functia main trebuie declarata int. In al doilea rand, programul tau cicleaza la infinit. Conditia de continuare a ciclului while(a != 0) ar trebui sa fie while (a != b).


Titlul: Răspuns: 001 CMMDC
Scris de: Tansanu Florin din Noiembrie 29, 2008, 20:30:35
ok...am inteles....multumesc mult

Later edit: Am primit doar 50 de puncte pe problema....cred ca am depasit timpul de executie:(
http://infoarena.ro/job_detail/224227



Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Noiembrie 30, 2008, 11:16:40
Tu ce crezi ca inseamna Wrong Answer?

Ti-as sugera sa citesti documentatia (http://infoarena.ro/documentatie).


Titlul: Răspuns: 001 CMMDC
Scris de: Tudor Popa din Februarie 19, 2009, 22:46:11
aici se foloseste formula lui euclid
nu-ti iese din timp daca o folosesti


Titlul: Răspuns: 001 CMMDC
Scris de: Tudor Popa din Februarie 19, 2009, 22:55:45
am primit si eu tot 50 de pct
e din cauza faptului ca dc sunt prime intre ele se afiseaza 0
folosind algoritmul lui euclid iti afiseaza 1
lol


Titlul: Răspuns: 001 CMMDC
Scris de: Emanuel Cinca din Februarie 19, 2009, 23:31:23
Citat
am primit si eu tot 50 de pct
e din cauza faptului ca dc sunt prime intre ele se afiseaza 0
folosind algoritmul lui euclid iti afiseaza 1
lol

nu iti afiseaza 1... doar iti da cmmdc=1... tu poti sa afisezi ce vrei :)


Titlul: Răspuns: 001 CMMDC
Scris de: Nicoara Ionut din Martie 18, 2009, 10:58:30
nu imi ies doar 5 din 10 teste ... DE CE?  ](*,)   HELP ME PLEASE!!!!!!! :'(


Titlul: Răspuns: 001 CMMDC
Scris de: Savin Tiberiu din Martie 18, 2009, 12:06:08
Mai citeste topicul asta, vezi ca s-a mai discutat asa ceva :P


Titlul: Răspuns: 001 CMMDC
Scris de: zloteanu adrian nichita din Aprilie 02, 2009, 16:26:05
Nu imi ies decat 80 de puncte :readthis: :readthis: :readthis:
Cod:
#include<fstream.h>
int main()
{int i,a,b,cmmdc;
ifstream q("cmmdc.in");
ofstream w("cmmdc.out");
q>>a>>b;
cmmdc=0;
for(i=1;i<a;i++)
  if(a%i==0&&b%i==0)
   cmmdc=i;
  if(cmmdc!=1)
w<<cmmdc;
else
 w<<"0";}

compilatoarele aste sunt aiurea!!!!!!!!!!!!!!!!!!!!
am schimbat doar for-ul din for(i=1;i<a;i++) in for(i=1;i<b;i++) si mia dat 100 de puncte :winner1: :winner2: :winner3: :banana:

[editat de moderator] nu mai posta consecutiv si foloseste tag-ul "code" cand postezi cod pe forum


Titlul: Răspuns: 001 CMMDC
Scris de: Sima Cotizo din Aprilie 02, 2009, 16:45:22
Compilatoarele nu sunt deloc aiurea. Mai repede rezolvarea ta este gresita. In sursa initiala, cu i<a, ce se intampla daca cmmdc(a,b)=a ?


Titlul: Răspuns: 001 CMMDC
Scris de: zloteanu adrian nichita din Aprilie 02, 2009, 16:54:40
tot nu pricep de ce cand am modificat mia dat 100p


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Aprilie 02, 2009, 16:56:43
Probabil ca nu sunt teste in care cmmdc(a, b) = b.


Titlul: Răspuns: 001 CMMDC
Scris de: A Cosmina - vechi din Iulie 19, 2009, 18:30:13
Iese cu varianta clasica (http://en.wikipedia.org/wiki/Euclidean_algorithm) ... Dupa ce m-am "complicat" (http://ro.wikipedia.org/wiki/Cel_mai_mare_divizor_comun) aiurea a iesit .  :)


Titlul: Răspuns: 001 CMMDC
Scris de: Tarniceru Tudor din Decembrie 16, 2009, 15:06:00
cine ma ajuta si pe mine?ca nu prea stiu informatica(sunt incepator).mi-a dat doar 50 de puncte   :sad:.stiu mai mult HTML decat c++.


Titlul: Răspuns: 001 CMMDC
Scris de: Paul-Dan Baltescu din Decembrie 16, 2009, 15:38:39
Nu e gresit ce ai facut, doar ca nu ai citit atent enuntul.


Titlul: Răspuns: 001 CMMDC
Scris de: Ivan Nicolae din Decembrie 17, 2009, 03:37:19
"stiu mai mult HTML decat c++."  :thumbup: 
     Mi-a placut asta.  8)


Titlul: Răspuns: 001 CMMDC
Scris de: Pripoae Teodor Anton din Decembrie 17, 2009, 08:55:04
Pai hai ca fac un IAP sa poti submita ca pe spoj in html :P.


Titlul: Răspuns: 001 CMMDC
Scris de: Dragan Valentin din Decembrie 21, 2009, 13:11:58
mai , e foarte simpla problema !  :D

cat timp b diferit de 0 trb sa faci :
 
            restul devine a mod b;
            a devine b;
            b devine restul;
end;

si la sfarsit afisezi a.

P.S. cei cu 50 puncte !!! Vedeti ca in enunt zice : Daca numerele sunt prime intre ele se va afisa 0 !


Problema e super usoara !  :winner1: Enjoy !  :banana:


Titlul: Răspuns: 001 CMMDC
Scris de: Paul-Dan Baltescu din Decembrie 21, 2009, 15:48:32
Topicul acesta este pentru a primi si a oferi sfaturi pentru rezolvarea problemelor, nu pentru a va lauda. Primele doua probleme din arhiva sunt simple, apoi incepe greul. :)


Titlul: Răspuns: 001 CMMDC
Scris de: Tudor Tudor din Ianuarie 26, 2010, 12:29:29
nu stiu de ce nu imi merge.cred ca sunt probleme cu compilatorul. ??? ??? ???.sau am gresit eu? :D


Titlul: Răspuns: 001 CMMDC
Scris de: Gabriel Bitis din Ianuarie 26, 2010, 12:41:19
Citeste cu doua posturi mai sus de al tau :).

Inainte sa ceri ajutor pe forum, asigura-te ca ai citit bine enuntul problemei, si ca nu s-a mai discutat subiectul inainte sa postezi tu (adica citeste si posturile anterioare).


Titlul: Răspuns: 001 CMMDC
Scris de: Halalai Tudor Andrei din Februarie 12, 2010, 18:09:33
asta este chiar jenant!!! :oops: Am facut probleme mai grele iar a asta imi da 50 de puncte!!!
 ](*,)


Titlul: Răspuns: 001 CMMDC
Scris de: Simoiu Robert din Februarie 12, 2010, 18:12:31
asta este chiar jenant!!! :oops: Am facut probleme mai grele iar a asta imi da 50 de puncte!!!
 ](*,)
Dar chiar nu stiti sa cititi: DACA NUMERELE SUNT PRIME INTRE ELE SA SE AFISEZE 0. Deci pune o conditie si daca cmmdc(a,b)=1 atunci afisezi 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Halalai Tudor Andrei din Februarie 12, 2010, 18:15:57
stiu partea aia si am pus sa afiseze doar 0. Ghici ce?!! imi da tot 50 de puncte! :angry:!!!! :angry: :fool:


Titlul: Răspuns: 001 CMMDC
Scris de: Simoiu Robert din Februarie 12, 2010, 18:36:34
stiu partea aia si am pus sa afiseze doar 0. Ghici ce?!! imi da tot 50 de puncte! :angry:!!!! :angry: :fool:
Da-mi sursa prin P.M.


Titlul: Răspuns: 001 CMMDC
Scris de: Halalai Tudor Andrei din Februarie 12, 2010, 19:00:21
vad ca tu iei 100 de puncte. Care-i problema??? :'( ???


Titlul: Răspuns: 001 CMMDC
Scris de: Simoiu Robert din Februarie 12, 2010, 19:02:53
vad ca tu iei 100 de puncte. Care-i problema??? :'( ???
Ti-am trimis prin P.M.


Titlul: Răspuns: 001 CMMDC
Scris de: Pripoae Teodor Anton din Februarie 12, 2010, 23:43:10
Vezi ca atunci cand cmmdc este 1 trebuie sa afisezi 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Simoiu Robert din Februarie 13, 2010, 11:38:53
Vezi ca atunci cand cmmdc este 1 trebuie sa afisezi 0.
Da, stie si a afisat. Eroarea lui era ca citea din fisierul de iesire (fscanf(g,...)), si ii dadea bine doar pentru cazurile cu 0. Si a facut cu metoda scaderilor, i-am zis sa faca cu impartiri, este mai optim  :ok:


Titlul: Răspuns: 001 CMMDC
Scris de: Halalai Tudor Andrei din Februarie 14, 2010, 11:24:03
am si eu o itrebare ciudata...
CAT II TREBUIE EVALUATORULUI SA COMPILEZE O SURSA?!?!?!?!?!?!?!?!? ](*,) :fool: #-o


Titlul: Răspuns: 001 CMMDC
Scris de: Dragos-Alin Rotaru din Februarie 14, 2010, 11:27:05
Momentan evaluatorul a picat. Asteapta sa il reporneasca adminii.


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Geogescu din Martie 09, 2010, 19:00:50
Editat de admin: Invata sa te exprimi civilizat!


Titlul: Cu ce am gresit de-mi dau astia 50 de puncte?
Scris de: Marin Victor din Mai 05, 2010, 20:13:34
Am facut programul in felul urmator:

Cod:
#include<fstream>
using namespace std;
int cmmdc(int a, int b){
if (a%b==0){
return b;}
else{
return cmmdc(b,a%b);}}
int main(){
long a,b;
ifstream in("cmmdc.in");
ofstream out("cmmdc.out");
in>>a;
in>>b;
if (cmmdc(a,b)<=30000){
out<<cmmdc(a,b);
if (cmmdc(a,b)==1){out<<"0";}}
out.close();
in.close();
return 0;}

Ce este gresit? ](*,) :readthis: :sad: :fool:

[editat de moderator] foloseste tag-ul "code" cand postezicod pe forum.


Titlul: Răspuns: 001 CMMDC
Scris de: Dragos-Alin Rotaru din Mai 05, 2010, 20:25:13
Pentru ca atunci cand cmmdc (a, b) este 1 tu afisezi mai intai 1, apoi 0. Corect ar fi sa afisezi doar 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Manea Stefan Adrian din Decembrie 09, 2010, 13:26:34
Mda, same problem. 50 puncte pentru perfectiune =).
Np!


Titlul: Răspuns: 001 CMMDC
Scris de: Pripoae Teodor Anton din Decembrie 09, 2010, 13:49:10
Vezi ca atunci cand cmmdc e 1 afisezi 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Manea Stefan Adrian din Decembrie 09, 2010, 20:33:20
Aaa, caz particular ?:D


Titlul: Răspuns: 001 CMMDC
Scris de: Dragos-Alin Rotaru din Decembrie 09, 2010, 21:12:31
De fapt scrie in enunt:
Citat
pe prima linie: cel mai mare divizor comun pentru a si b. Daca a si b sunt numere prime intre ele, atunci se va tipari 0


Titlul: Răspuns: 001 CMMDC
Scris de: Silasi Alex din Martie 07, 2011, 20:24:04
eu asha am facuto si asha cred cae cel mai simplu:

Cod:
#include<iostream.h>
void cmmdc();
int main()
{
cmmdc();
return 0;
}
void cmmdc()
{
int a,b,n,i;
cout<<"n=";
cin>>n;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
for(i=n;i>=1;i--)
if(a%i==0 && b%i==0)
break;
cout<<"Cmmdc al a si b este:"<<i;
}
   


Titlul: Răspuns: 001 CMMDC
Scris de: Simoiu Robert din Martie 07, 2011, 21:16:04
Pune-ti codul intre tagurile code, si in al doilea rand nu trebuie citit de la tastatura si cu .... chestiile acelea de afisat, trebuie citit din fisier. :)


Titlul: Răspuns: 001 CMMDC
Scris de: Silasi Alex din Martie 15, 2011, 18:25:43
Varianta mea mi se pare cea mai usoara si nu include tot felul de algoritmi si si merge testatio daca vreti:
#include<iostream>
using namespace std;
int main()
{
   int a,b,i,n;
   cout<<"Dati n=";
   cin>>n;
   cout<<"Dati a=";
   cin>>a;
   cout<<"Dati b=";
   cin>>b;
   for(i=n;i>=1;i--)
      if(a%i==0 && b%i==0)
         break;
   cout<<endl;
   cout<<"CMMDC al"<<" "<<a<<" "<<"si"<<" "<<b<<" "<<"este"<<" "<<i;
   return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Savin Tiberiu din Martie 15, 2011, 19:10:32
In primul rand nu inteleg de ce ai nevoie de 3 numere cand tu vrei sa calculezi cmmdc-ul a 2 numere :-" (deci ai o greseala in gandire aici).
In al doilea rand algoritmul e foarte ineficient. Daca incerci sa calculezi cmmdc-ul a nr destul de mari algoritmul tau va face foarte multe operatii si va dura foarte mult. Nu folosim algoritmi complicati doar ca se ne aflam in treaba sau ca sa ne dam noi mari, ci pentru ca sunt mai rapizi.


Titlul: Răspuns: 001 CMMDC
Scris de: Telechi Nicolae din Martie 18, 2011, 23:20:09
Norok baeti ea spuneti si mie unde e greseala aici ? eu sunt din moldova noi invatam pascalul cu c++ de aceia va rog sa nu ma criticati tare :D sunt incepator :)

#include <stdio.h>
int main()
{
   long int a,b,c,i;
   FILE *f1;
   FILE *f2;
   f1=freopen("cmmdc.in","r",stdin);
   f2=freopen("cmmdc.out","w",stdout);
   fscanf(f1,"%d %d",&a,&b);
    i=1;
    do {
       if ((a % i==0) and (b % i==0)){c=i;}
       i++;
    }
   while((a!=i+1) and (b!=i+1));
      if (c==1) c=0;
   fprintf(f2,"%d\n",c);
    fclose(f1);
    fclose(f2);
   return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Savin Tiberiu din Martie 19, 2011, 04:35:14
In primul rand am impresia ca pe testul 4 8 algoritmul tau o sa dea 2 (nu iei in calcul ca cmmdc poate fi chiar unul dintre numere). De asemenea algoritmul tau e ineficient. Pentru o rezolvare eficienta cauta algoritmul lui Euclid.


Titlul: Răspuns: 001 CMMDC
Scris de: Telechi Nicolae din Martie 19, 2011, 11:35:37
devilkind ... Iti multumesc foarte mult :) Eu defapt am luat in consideratie si daca este una dintre cifre, doar ca am gresit putin in loc sa pun while((a!=i-1) and (b!=i-1)); am pus while((a!=i+1) and (b!=i+1)); Mersi mult am vazut unde este greseala privind algoritmul cred ca stiu o ideie mai buna doar ca trebu mai multe instructiuni de scris, adica daca cea mai mare cifra din cele doua este de exemplu 12 voi face un ciclu care voi cauta pina la 12/2 si daca se divid ambele numere de exemplu cu 2 si cu 3 inseamna ca se divid si cu 6 :)


Titlul: Răspuns: 001 CMMDC
Scris de: UBB Bora Dan din Septembrie 28, 2011, 15:24:19
Eu l-am rezolvat asa:

Cod:
#include<fstream>
using namespace std;
ifstream fin("cmmdc.in");
ofstream fout("cmmdc.out");
int main()
{int a ,b, r;
fin>>a>>b;
while(a%b!=0)
{r=a%b;
a=b; b=r;
}
if(b==1)fout<<"0";
else
fout<<b;
fin.close();
fout.close();
return 0;
}

si iau 100 puncte :D


1. Foloseste tag-ul [ code ] [/ code ] (fara spatii) cand mai postezi cod.
2. Care e utilitatea postului tau?


Titlul: Răspuns: 001 CMMDC
Scris de: Cosmin Rusu din Octombrie 06, 2011, 15:07:15
De ce e 0 puncte?? :angry: :angry: :angry:


Titlul: Răspuns: 001 CMMDC
Scris de: Zoltan Razvan-Daniel din Noiembrie 08, 2011, 17:40:38
Salut ! uite ce am facut eu!..:
Cod:
#include<fstream>
using namespace std;
ifstream fin("cmmdc.in");
ofstream fout("cmmdc.out");
int main()
{
int a,b,r,c;
fin>>a>>b;
while(r!=0)
{
r=a%b;
a=b;
b=r;
}
c=a;
if(c==1)c=0;
fout<<c;
return 0;
}
Nu stiu ce e gresit , si as vrea o parere de la voi. :).Tin sa precizez ca sunt in clasa a 6-a[incepator].. Numai bine!


Titlul: Răspuns: 001 CMMDC
Scris de: Simoiu Robert din Noiembrie 08, 2011, 20:03:28
Banuiesc (nu stiu sigur) ca de la asta se trage : int a,b,r,c; Aceste variabile locale declarate o sa dea valori lui r aiurea, si while (r != 0) s-ar putea sa nu se executa, r fiind 0. Pune in loc de aia b != 0 (sau b > 0), e tot aia, ar trebui sa mearga.


Titlul: Răspuns: 001 CMMDC
Scris de: c a e n din Noiembrie 08, 2011, 20:59:07
Sau poti sa faci un do/while in loc de while-ul tau. Il va executa cel putin o data, deci r va fi modificat inainte de evaluare.


Titlul: Răspuns: 001 CMMDC
Scris de: Zoltan Razvan-Daniel din Noiembrie 09, 2011, 20:44:45
Multumesc frumos , Spider! Acum am luat si eu 100 de puncte cu indicatia ta. :). Merci inca o data.


Titlul: Răspuns: 001 CMMDC
Scris de: Adrian Dinu din Ianuarie 17, 2012, 20:46:57
Daca primiti 50 pct si sunteti siguri de rezolvare s-ar putea sa fie vorba de faptul ca daca cmmdc=1 atunci in fisier trebuie scris 0 si nu 1...a trebuit sa trimit problema de 3 ori ca sa vad asta...desi e aiurea ca 1 e si el divizor


Titlul: Răspuns: 001 CMMDC
Scris de: Stoica Gabriel-Cristian din Martie 20, 2012, 21:24:50
Zau asa?! Iti bati joc de mine?! M-am chinuit sa fac problema si imi spune evaluare completa 0 puncte... Pana la urma fisierul sursa este cel de tipul .CPP nu?


Titlul: Răspuns: 001 CMMDC
Scris de: Laurentiu Ion din Martie 20, 2012, 21:31:45
Zau asa?! Iti bati joc de mine?! M-am chinuit sa fac problema si imi spune evaluare completa 0 puncte... Pana la urma fisierul sursa este cel de tipul .CPP nu?

Da, fisierul .cpp trebuie trimis. Greseala ta este
Cod:
g<<"CMMDC="<<CMMDC(a,b);
nu mai afisa si "CMMDC=", doar raspunsul:
Cod:
g<<CMMDC(a,b);


Titlul: Răspuns: 001 CMMDC
Scris de: Stoica Gabriel-Cristian din Martie 20, 2012, 21:40:06
OK mersi mult.


Titlul: euclid
Scris de: Vass Peter din Septembrie 09, 2012, 12:56:02
Eu primesc 100 puncte cu algoritmul lui Euclid. http://en.wikipedia.org/wiki/Euclidean_algorithm (http://en.wikipedia.org/wiki/Euclidean_algorithm)


Titlul: Răspuns: 001 CMMDC
Scris de: Marinescu Sebastian-Ioan din Septembrie 13, 2012, 09:30:02
Am probleme cu CMMDC. Am incercat mai multe solutii si tot 50 de pct am primit ???

Later edit: :winner1: Merge orice metoda. Aveti grija cand sunt prime! Trebuie afisat 0 :winner1:


Titlul: Răspuns: 001 CMMDC
Scris de: Test Info Edu Arena din Aprilie 16, 2013, 19:07:09
WTF e bugat compilatorul ?
Cod:
#include <fstream>
using namespace std;
int main()
{
int a, b, r, cmmdc;
ifstream fin(cmmdc.in");
ofstream fout("cmmdc.out");
fin>>a>>b;
r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
if(b<30000)
fout<<b;
}

Imi da 0 pct. ( l-am testat de 5-10 ori si functioneaza perfect. Chiar am inclus si o conditie acolo b<30.000 :|
 ](*,)

 Foloseste tag-ul code cand postezi cod. Si foloseste un limbaj adecvat.


Titlul: Răspuns: 001 CMMDC
Scris de: Alex Velea din Aprilie 16, 2013, 23:25:10
Citat
Daca a si b sunt numere prime intre ele, atunci se va tipari 0
Cu placere :)


Titlul: Răspuns: 001 CMMDC
Scris de: Pantea Andrei Tiberiu din Mai 10, 2013, 15:57:15
intra in long long??


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Grigorean din Mai 10, 2013, 19:30:46
Intra pe int.


Titlul: Răspuns: 001 CMMDC
Scris de: Merdescu Razvan din Iulie 05, 2013, 21:02:29
Salut!  Sunt nou pe comunitatea infoarena si tin sa multumesc anticipat oricui ma va ajuta in aceasta problema si in urmatoarele, caci sigur se vor mai ivi si nu-mi voi gasi singur raspuns...

Acesta este codul me sursa:

#include <fstream>
using namespace std;
 
int main()
    {int a,b;
    ifstream f("cmmdc.in");
    ofstream g("cmmdc.out");
    f>>a>>b;
    if(a==b)
      {g<<0;}
    else
      {
      while(a!=b)
         {if (a>b)
         a=a-b;
         else
         b=b-a;
         }
      g<<a;
      }
    return 0;
}


Primesc numai 50 din cele 100 de puncte si am inteles ca ar trebui cumva ca ar trebui facut cu imparitri.   Poate cineva sa imi explice sau sa lase algoritmul pentru acest program folosind impartirile?   Pur si simplu nu pot sa-l concep.


Titlul: Răspuns: 001 CMMDC
Scris de: Avramescu Cristian din Iulie 05, 2013, 21:08:10
merge si cu scaderi doar ca tu ratezi un caz , atunci cand numerele sunt prime intre ele ( adica a  devine 1 )
pune asa :
 if( a == 1 )
g<<0;
else   g<<a;
si problema e rezolvata . Bafta !


Titlul: Răspuns: 001 CMMDC
Scris de: Merdescu Razvan din Iulie 05, 2013, 21:29:38
#include <fstream>
using namespace std;
 
int main()
    {int a,b;
    ifstream f("cmmdc.in");
    ofstream g("cmmdc.out");
    f>>a>>b;
    if(a==1 || b==1 || a==0)
      {g<<0;}
    else
      {
      while(a!=b)
         {if (a>b)
         a=a-b;
         else
         b=b-a;
         }
      g<<a;
      }
    return 0;
}


Tot 50%...  sau poate nu am pus cazul unde trebuia?


Titlul: Răspuns: 001 CMMDC
Scris de: Avramescu Cristian din Iulie 05, 2013, 21:41:15
nu ai pus cazul unde trebuia ...la final ( dupa scaderi ) a -ul tau reprezinta defapt cel mai mare divizor comun pentru a si b . Deci daca el e 1 inseamna ca sunt prime intre ele, si afisezi 0.
 


Titlul: Răspuns: 001 CMMDC
Scris de: Merdescu Razvan din Iulie 05, 2013, 22:24:46
Aaah. Prime intre ele. Am inteles!   Mersi mult!


Titlul: Răspuns: 001 CMMDC
Scris de: Pantea Andrei Tiberiu din Octombrie 07, 2013, 11:26:42
 =D&gt; :banana: :winner1: :rotfl:


Titlul: Răspuns: 001 CMMDC
Scris de: Stafie Ciprian Mihai din Noiembrie 21, 2013, 19:14:37
100 de puncte :
Cod:
#include <fstream>
using namespace std;
int main ()
{
    ifstream f("cmmdc.in");
    ofstream g("cmmdc.out");
    int a,b,c;
    f >> a >> b;
    while (b)
    {
        c=b;
        b=a%b;
        a=c;
    }
    if (a==1)
        a=0;
    g << a;
}
Atentie , va da 50 de pct pt ca trebuie sa se arate 0 daca sunt prime intre ele...


Titlul: nu va merg compilatoarele
Scris de: Marin Cristian din Decembrie 16, 2013, 19:22:06
la mine merge :p


Titlul: Răspuns: 001 CMMDC
Scris de: Anescu Sergiu Stefan din Ianuarie 31, 2014, 17:25:58
Am facut programul am verificat chiar si valorile de se dau in cerinta 8 si 12 si cmmdc fiind 4,dar cand il pun imi da 0 puncte.Programul l-am facut in C++. (Visual Studio 2012).

#include<iostream>
using namespace std;
int cmmdc(int a, int b)
{
   
   while(a!=b)
   {
      if(a>b)
         a=a-b;
      else
         b=b-a;
   }
   return a;
}
void main()
{
   int a,b;
   cout<<"a="; cin>>a;
   cout<<"b="; cin>>b;
   
   cout<<"Cel mai mare div comun dintre a si b este:"<<cmmdc(a,b)<<endl;
   system("pause");
}

      


Titlul: Răspuns: 001 CMMDC
Scris de: Mihai Calancea din Ianuarie 31, 2014, 18:07:38
Trebuie sa respecti exact formatul de iesire. Ti se cere doar valoarea celui mai mare divizor comun, nu trebuie sa scrii introducerea in cuvinte :).


Titlul: Răspuns: 001 CMMDC
Scris de: Duica Costinel din Februarie 10, 2014, 17:38:53
De ce imi da eroarea asta? Killed by signal 11(SIGSEGV)


Titlul: Răspuns: 001 CMMDC
Scris de: Necula Radu din Februarie 21, 2014, 20:47:50
de ce nu mi se verifica sursa?


Titlul: Răspuns: 001 CMMDC
Scris de: Barabasi Csongor din Februarie 26, 2014, 16:28:03
E problema cu evaluatoru.Pentru cei ce nu reusesc sa rezolve problema asta aici e o rezolvare de 100 de puncte.

#include <cstdio>

using namespace std;

long long int euclid(long long int a,long long int b)
{
    if(b==0) return a;
    return euclid(b,a%b);
}

int main()
{freopen("cmmdc.in","r",stdin);
freopen("cmmdc.out","w",stdout);
long long int a,b;
scanf("%lld%lld",&a,&b);
long long int x=euclid(a,b);
if(x==1) printf("0");
else printf("%lld",x);
}


Titlul: Răspuns: 001 CMMDC
Scris de: Alpaca Gedit din Martie 07, 2014, 13:24:13
Vreau si eu un sfat ce program sa folosesc (sa fie ptr unn incepator ) si care sa mearga pe infoarena adica sa obtin si eu puncte la problemele astea usoare . Eu ma pricep doar in Borland C++ ca asa am invatat la scoala. PLs HelP me  :-k :-k


Iti sugerez Code::Blocks IDE....dar daca ai Mac poti incerca XCode...
Ps: La olimpiada trebuie sa codezi in Code::Blocks :D


Titlul: Răspuns: 001 CMMDC
Scris de: Theodor Moroianu din Martie 29, 2014, 19:38:12
foarte ciudat sa returneze 0 in loc de 1 daca cele 2 nr sunt prime intre ele... :-s


Titlul: Răspuns: 001 CMMDC
Scris de: alexandru din Mai 30, 2014, 11:59:21
si mie imi da dea 50 puncte pt un program bun,dar asa se intampla cand uiti sa inchizi fisierele text


Titlul: Răspuns: 001 CMMDC
Scris de: andreidei din Iunie 06, 2014, 15:13:32
a fost usoara problema dar am avut probleme cand iam dat run(am code bloks) =D&gt; ](*,)


Titlul: Răspuns: 001 CMMDC
Scris de: Stoica Mircea-Madalin din Iulie 29, 2014, 13:58:53
ce spuneti de ideea mea? :-k
------------------------
Cod:
#include <fstream>
using namespace std;
ifstream f("cmmdc.in");
ofstream g("cmmdc.out");
int main()
{
    int a,b,i;
    f>>a>>b;
    f.close();
    if(a>b)
 {
     i=a;a=b;b=i;
 }
    for(i=a;i>=2;i--)
      if(b%i==0 && a%i==0)
         {
            g<<i<<endl;
            return 1;
         }
    g<<0;
    g.close();
    return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Gheorghe Stefan din Septembrie 27, 2014, 13:47:53
ce e grasit la programul acesta?
   f>>a>>b;
   while (a != b)
  {
    if (a > b)
    {
      a=a-b;
    }
    else
    {
      b=b-a;
    }
  }
if (a!=1)
{
    g<<a;
}
else
{
    g<<'0';
}
    return a;
de fiecare data cand il introduc mi se dau 0 puncte.


Titlul: Răspuns: 001 CMMDC
Scris de: Valentin Valeanu din Septembrie 27, 2014, 15:52:32
Incearca sa inveti algoritmul lui euclid.
http://www.infoarena.ro/problema/euclid2
daca vrei sa mearga programul tau acolo in loc de return a ar trebuii return 0.


Titlul: Răspuns: 001 CMMDC
Scris de: Kovacs Oszkar din Octombrie 01, 2014, 11:40:14
Salut,am scris programul ,dar ni functioneaza:( cineva pot sa ajut ,pentru ca nu stiu ce este problema ?

#include <fstream>
#include "stdio.h"
 using namespace std;

int lnko(int z,int y)
{
   int tmp;
 
   if (z<0) z= -z;
   if (y<0) y= -y;
   while(y > 0) {
      tmp = y;
      z = z % y;
      z = tmp;
   }
   return z;
}
 
int main()
{
    ifstream f("cmmdc.in"); 
    ofstream g("cmmdc.out");
 int a,b,e;
  f >> a >> b;
 
e = lnko (a,b);
 if (e>30000)
 return 0;
 else{
  g << e << '\n';
 g.close();
  return 0; 
}}


Titlul: Răspuns: 001 CMMDC
Scris de: Andrei Florescu din Octombrie 17, 2014, 12:18:54
Poate sa-mi spuna cineva ce nu e bine la programul asta? Tot primesc 50 de puncte. Am primit si prima oara cand aveam programul fara conditia numerelor prime tot 50. Multumesc.

#include <iostream>
#include <fstream>

using namespace std;

int a, b, c, d, maxi = 0, i = 1;

ofstream f("cmmdc.in");
ofstream g("cmmdc.out");

int main() {

   cout << "Introduceti primul numar: ";
   cin >> a;
   f << a << " ";
   cout << "Introduceti al doilea numar: ";
   cin >> b;
   f << b << endl;

   for(i = 1; i <= a && i <= b; i++)
   {
      c = a/i;
      d = b/i;
      if(a == c*i && b == d*i && i > maxi)
         maxi = i;
   }

   if(maxi == 1)
      g << "0" << endl;
   else
      g << maxi << endl;

   return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Vasiu Alexandru din Octombrie 19, 2014, 12:01:26
#include <fstream>

using namespace std;

int euclid(int a, int b)
{
    long long unsigned c;
    while (b)
    {
        c=a%b;
        a=b;
        b=c;
    }
    return a;
}
int main()
{
    long long unsigned a,b;
    ifstream f("cmmdc.in");
    ofstream g("cmmdc.out");
    f>>a>>b;
    g<<euclid(a,b);
    f.close();
    g.close();

    return 0;
}
de ce primesc tot 50 de puncte?


Titlul: Răspuns: 001 CMMDC
Scris de: bieltz vlad din Ianuarie 11, 2015, 12:31:24
Cod:
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
int a,b,i,S=0;
ifstream f("cmmdc.in");
f>>a>>b;
while((a!=b)&&(a>0)&&(b>0))
{if(a>b)a=a-b;
else b=b-a;
}
  for(i=1;i<=b;i++)
    {if(b%i==0)S=S+i;
}
ofstream g("cmmdc.out");
if(S>(b+1))g<<b;
else g<<"0";
 
return 0;
}

de ce esueaza la ultimul test? 90 puncte imi da


Titlul: Răspuns: 001 CMMDC
Scris de: Apetrii Danut-Gabriel din Ianuarie 17, 2015, 22:10:27
de ce imi da numai 50 de puncte?
#include <fstream>

using namespace std;

int main()
{
    int a,b,r;
    ifstream fin ("cmmdc.in");
    fin>>b>>a;
    while(b!=0)
    {
         r=a%b;
         a=b;
         b=r;
    }
    fin.close();
    ofstream fout("cmmdc.out");
    fout<<a;
    fout.close();
    return 0;
}
 ](*,)


Titlul: Răspuns: 001 CMMDC
Scris de: Pirtoaca George Sebastian din Ianuarie 18, 2015, 00:21:11
Daca a si b sunt prime intre ele trebuie afisat 0.


Titlul: Răspuns: 001 CMMDC
Scris de: No Name din Februarie 16, 2015, 15:38:42
De ce iau 0 puncte cand trimit solutia, la mine merge perfect. Aici este algoritmul:
Cod:
#include <iostream>
#include <fstream>
using namespace std;


int main()
{
ifstream in;
ofstream out;
in.open("cmmdc.in.txt");
int a, b, x, y;
in >> a >> b;
while (a != b)
{
if (b > a)
{
b = b - a;
}
if (a > b)
{
a = a - b;
}
}
out.open("cmmdc.out.txt");
if (a < 30000)
{
if (a == 1)
{
out << "0";
}
else
{
out << a;
}
}
else
{
out << "Eroare";
}
in.close();
out.close();
return 0;
}
Edit, e din cauza ca am pus cmmdc.in.txt si cmmdc.out.txt, am scos txt-ul si iau 100 de puncte


Titlul: Răspuns: 001 CMMDC
Scris de: Rotari David din Iunie 05, 2015, 22:18:32
Buna.Imi puteti spune ce sa fac ,ca sa fie compilat programul trimis de mine ,ca am incercat deja totul;


Titlul: Răspuns: 001 CMMDC
Scris de: Pirtoaca George Sebastian din Iunie 05, 2015, 22:55:10
Nu trebuie sa trimiți pe infoarena fișierul xml asociat proiectului CodeBlocks. Trimite fișierul .c/.cpp. Fi atent si cum numești fișierele de intrare/ieșire: nu pune path-uri absolute, ci fa asa ifstream f("cmmdc.in").


Titlul: Răspuns: 001 CMMDC
Scris de: Alexandru din Decembrie 27, 2015, 13:30:15
#include<stdio.h>
int main()
{
   int a, b, r;
   scanf("%d", &a);
   scanf("%d", &b);
   while (b)
   {
      r = a%b;
         a = b;
      b = r;


   }
   printf("%d", a);
}

Imi da 0 puncte.De ce? :readthis:


Titlul: Răspuns: 001 CMMDC
Scris de: Alexandru din Decembrie 27, 2015, 13:30:40
#include<stdio.h>
int main()
{
   int a, b, r;
   scanf("%d", &a);
   scanf("%d", &b);
   while (b)
   {
      r = a%b;
         a = b;
      b = r;


   }
   printf("%d", a);
}

Imi da 0 puncte.De ce? :readthis:


Titlul: Răspuns: 001 CMMDC
Scris de: Valeriu Motroi din Decembrie 27, 2015, 21:34:24
Pentru că nu citești atent enunțul problemei.


Titlul: Răspuns: 001 CMMDC
Scris de: Cosmin Dochitei din Iunie 26, 2016, 19:14:34
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    int a,b,r;
    ifstream f("cmmmdc.in");
    ofstream g("cmmdc.out");
    f >> a >> b;
    while(b != 0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    if(a<30000)
    {
      if(a==1)
      {
          g << "0";
      }
      else
      {
          g << a;
      }
    }
    else
    {
        g << "Eroare";
    }
    f.close();
    g.close();
    return 0;
}

de ce 50 puncte ?


Titlul: Răspuns: 001 CMMDC
Scris de: Raduta Andrei din Octombrie 23, 2016, 13:19:20
#include <stdio.h>

int main(){

   freopen("cmmdc.in", "r", stdin);
   freopen("cmmdc.out", "w", stdout);

   unsigned a, b, r;

   scanf("%u\n%u", &a, &b);

   r = a % b;

   while(r > 0){
      a = b;
      b = r;
      r = a % b;
      if(r == 1){
         printf("0\n");
         break;
      }
   }
   if(r == 0){
      if(a == b){
         printf("0\n");
      }
      else{
         printf("%u\n", b);
      }
   }

   return 0;
}

Iau doar 90 puncte, de ce, ma poate ajuta cineva?  ](*,) ](*,)


Titlul: Răspuns: 001 CMMDC
Scris de: mateisirghe din Octombrie 28, 2017, 10:27:43
cod de C++ care da 100:
#include <fstream>
 
using namespace std;
 
ifstream in("cmmdc.in");
ofstream out("cmmdc.out");
 
int main()
{
    int r,a,b,x;
    in>>a>>b;
    while(b)
    {
            r=a%b;
            a=b;
            b=r;
    }
    x=a;
    if(x==1)
    {
        out<<"0";
        return 0;
    }
    out<<x;
    return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: mateisirghe din Octombrie 28, 2017, 10:28:00
cod de C++ care da 100:
#include <fstream>
 
using namespace std;
 
ifstream in("cmmdc.in");
ofstream out("cmmdc.out");
 
int main()
{
    int r,a,b,x;
    in>>a>>b;
    while(b)
    {
            r=a%b;
            a=b;
            b=r;
    }
    x=a;
    if(x==1)
    {
        out<<"0";
        return 0;
    }
    out<<x;
    return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Sorin Coldea din Noiembrie 16, 2017, 20:26:23
# include <fstream> // includ o biblioteca de functi ,n numita "fstream"

int main() // este functia principala
{
   int a; // declararea variabila a de ,tipul int ,pentru a putea soca numere intregi
   int b; // declararea variabila b de ,tipul int ,pentru a putea stoca numere intregi
   std::ifstream f("cmmdc.in"); //
   std::ofstream g("cmmdc.out");
   f >> a;
   f >> b;

   if (a<b)
   {
      for (int i = a; i>0; i = i - 1)
      {
         if ((b%i == 0) && (a%i == 0))
         {
            if (i == 1)
            {
               g << 0;
            }
            else
            {
               g << i;
            }
            break;
         }
      }
   }
   else
   {
      for (int i = b; i>0; i = i - 1)

         if ((a%i == 0) && (b%i == 0))
         {
            if (i == 1)
            {
               g << 0;
            }
            else
            {
               g << i;
            }
            break;
         }
   }
   return 0;
}

Cu programul asa ei 100 de puncte :readthis:


Titlul: Răspuns: 001 CMMDC
Scris de: Chirica Corneliu Cezar din Octombrie 04, 2018, 17:53:56
Aceste este programul meu si desi la mine pe calculator merge aici primesc 0 puncte.Folosesc Codeblocks.
#include <fstream>
#include <iostream>
using namespace std;

int main()
{int A,B,r,aux;

 ifstream F1("date.in",ios::in);
 ofstream F2("date.out",ios::out);

    F1>>A;
    F1>>B;

    if(A<B)
    {aux=A;A=B;B=aux;}
     while(r!=0)
        {r=A%B;
        A=B;B=r;}

   if(A==1)
       F2<<"0"<<" "<<",deci numerele sunt prime intre ele,(nu exista c.m.m.d.c)";
   else
       F2<<A<<" "<<"este c.m.m.d.c";
    F1.close();
    F2.close();


    return 0;
}


Imi poate va rog explica cineva de ce nu merge.E primul program pe care incerc sa il trimit.Imi arata eroare de compilare si 0 puncte.


Titlul: Răspuns: 001 CMMDC
Scris de: Galatanu Bogdan Ioan din Ianuarie 20, 2019, 10:21:44
Am schimbat compilatorul cu cel pe 32bit si a functionat cu aceasta solutie:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
    fstream citirein("cmmdc.in",ios::in);
    ofstream output("cmmdc.out",ios::out);
    int a,b;
    citirein>>a>>b;
    citirein.close();
    while(a!=b)
    {
        if(a>b)
        a=a-b;
        else
        b=b-a;
    }
    if(a==1)
    a=0;
    output<<a;
    output.close();
    return 0;
}


Titlul: Răspuns: 001 CMMDC
Scris de: Python din Martie 14, 2019, 20:15:09
In python:
def cmmdc(a,b):
    while(b):
        c = a % b
        a = b
        b = c
    return a
 
filein = open("cmmdc.in", "r")
 
list = filein.read().split(" ")
c=cmmdc(int(list[0]),int(list[1]))
 
filein.close()
 
fileout = open("cmmdc.out", "w")
fileout.write(str(c))
fileout.close()
exit(0)
Imi spune ca exit code e 1 dar e 0