infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: Mihail Busteaga din Septembrie 25, 2013, 15:42:49



Titlul: Problema clasa a IX-a
Scris de: Mihail Busteaga din Septembrie 25, 2013, 15:42:49
Un numar este perfect daca el este egal cu suma divizorilor sai(Exclusiv el insusi).Scrieti un algoritm care sa testeze daca un numar natural dat este perfect.Tocmai am terminat pseudocodul si ne-a dat tema acest exercitiu de facut in c++.Eu am presupus ca are 3 divizori numarul si nu sunt sigur daca am facut corect.In plus, daca exista alta metoda mai buna sa imi spuneti.
#include <fstream>
#include <iostream>
using namespace std;
int a,b,c,d;
int main()
{
    a=b*c*d;
    if(b*c*d==b+c+d)
    cout<<1;
    else cout<<0;
    return 0;
}
 


Titlul: Răspuns: Problema clasa a IX-a
Scris de: Rares Cheseli din Septembrie 25, 2013, 19:28:27
Nu e corect ce faci. In primul rand ca problema ar trebui rezolvata pentru un numar oarecare, nu pt unul care are doar 3 divizori si in al 2-lea rand in codul tau a, b, c si d sunt toate egale cu 0 deoarece nu le citesti si nici nu le dai tu vreo valoare. In arhiva educationala de pe infoarena e explicat destul de bine cum se determina numarul divizorilor unui numar. Uite link-ul aici http://www.infoarena.ro/problema/ssnd. Sper sa te ajute!  :ok:


Titlul: Răspuns: Problema clasa a IX-a
Scris de: George Marcus din Septembrie 25, 2013, 21:26:42
Probabil ca problema din arhiva educationala e prea complicata pentru ce are nevoie el.


Titlul: Răspuns: Problema clasa a IX-a
Scris de: Dospra Cristian din Septembrie 25, 2013, 23:54:27
Cod:
#include <iostream>
using namespace std;

int main(){
    int x,i,s=0;

    cin >>x

    for (i=1;i<=x/2;++i)
         if (x%i==0)
            s=s+i;

    if (s==x)
        cout <<"Numarul "<<x<<"este perfect";
    else
        cout <<"Numarul "<<x<<"nu este perfect";

    return 0;
}
Asta e rezolvarea pentru orice numar de divizori. Daca iti e ceva neclar te rog sa-mi spui  :D