Jump to content

Recommended Posts

  • Moderators
Posted (edited)

Salut. Mă chinui de cca 20 de minute la o problemă şi tot nu i-am dat de capăt... pur şi simplu nu înţeleg unde e buba :(.

 

Se consideră numerele naturale nenule n şi d. Să se determine numărul perechilor de numere naturale nenule a şi b, ambele mai mici sau egale cu n şi cu proprietatea că cel mai mare divizor comun al lor este d. Perechea (a, b) se consideră a fi aceeaşi cu perechea (b, a).

 

Exemplu: Intrare: n=20; d=5;

Ieşire: 6

 

Ce am făcut eu:

#include <stdio.h>
int main()
{
    unsigned n,d,s=0,a,b,r,a1,b1;
    scanf("%d %d", &n, &d);
    for (a=1;a<=n;a++)
    {
        for (b=1;b<=n;b++)
        {
            a1=a; /*Le-am declarat in alte variabile deoarece nu pot lucra cu ele atata timp cat sunt in for*/
            b1=b;
            while (b1>0)
            {
                r=a1%b1;
                b1=a1;
                b1=r;
            }
            if (a1==d)
                s++;
        }
    }
    printf("%d", s);
    return 0;
}
Uhm, cred ca stiu unde e greseala: "Perechea (a, b) se consideră a fi aceeaşi cu perechea (b, a)". Cum memorez asta? Trebuie vectori? >.< Edited by Courage

Posted

ai putea. sau tinand cont ca pentru fiecare pereche (a,b), sigur vei intalni si (b,a) care va fi valida, deci ti se va pune ca fiind inca o solutie...

 

deci daca metoda in rest e buna, poti imparti la 2 numarul obtinut la final. 

  • Upvote 1

love is a verb
Love is a doing word

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.