Polski Spoj. Zadanie. Przedszkolanka

0

http://pl.spoj.com/problems/MWPZ06A/ Tu jest link do zadania rozwiązałam ję dwa razy i za każdym razem jest źle. Wie ktoś może czemu ?
Wersja 1 :

#include <iostream>

using namespace std;

int ile ;
int grupa1, grupa2 ;
int wynik ;
int dzielnik = 0;

int main()
{
    cin >> ile ;
    for (int i=1; i <= ile ; i++ )
    {
        cin >> grupa1 >> grupa2 ;
        do
        {
            do
            {
                dzielnik ++ ;
            }
            while ((grupa1 % dzielnik != 0 && grupa2 % dzielnik  != 0 ) || (dzielnik <= grupa1 + grupa2)) ;
            if (dzielnik > (grupa1 + grupa2))
            {
                wynik = grupa1 * grupa2 ;
                cout << wynik << endl ;
            }
            else
            {
                grupa1 = grupa1 / dzielnik ;
                grupa2 = grupa2 / dzielnik ;
            }

        }
        while (wynik == 0 );
        dzielnik = 0;
    }
    return 0;
}

Wersja 2 :

#include <iostream>

using namespace std;

int ile ;
int grupa1, grupa2 ;
int wynik ;
int dzielnik = 0;

int main()
{


    cin >> ile ;
    for (int i=0; i <= ile ; i++ )
    {
        cin >> grupa1 >> grupa2 ;
        do
        {
            do
            {
                dzielnik ++ ;
            } while ((grupa1 % dzielnik != 0 && grupa2 % dzielnik != 0 ) || dzielnik < grupa1 + grupa2) ;

            if (grupa1 % dzielnik == 0 && grupa2 % dzielnik == 0 )
            {
            grupa1 = grupa1 / dzielnik ;
            grupa2 = grupa2 / dzielnik ;
            }
            else if (dzielnik >= grupa1 + grupa2)
            {
                wynik = grupa1 * grupa2 ;
            }
            cout << wynik << endl ;
        }
        while (wynik != grupa1 * grupa2) ;
        dzielnik = 0;
    }
    return 0;
}

Z góry dzięki za pomoc

1

Nie wiem co ty tu modzisz, ale generalnie polecił bym poczytać o Najmniejszej Wspólnej Wielokrotności

1

Czemu masz to tak skomplikowane? Twój kod się wiesza!
Obliczeń jest maksymalnie 2 linijki, zero pętli (potrzebna jest tylko ta do wczytywania zestawów danych).
Weź do reki kartkę, zapisz równania.
Masz niewiadome:
m - obecny wiek matki
c - czasz ciąży (-c to obecny wiek dziecka)
z, y, z to parametry dwóch równań z dwoma niewiadomymi. Zapisz te równania i rozwiąż, dostaniesz wzór na c który masz potem wprowadzić do kodu. Podaj nam jaki masz wzór.

#include <iostream>
using namespace std;

int main() {
	int testCount;
	cin >> testCount;
	for (int i=0; i<testCount; ++i) {
		int x, y, z;
		cin >> x >> y >> z;
		int c = … … … ;
		cout << c << endl;
	}
	return 0;
}

Pamiętaj, że dane wejściowe są w latach (x, y), a wynik ma być w miesiącach, czyli masz mnożyć gdzieś przez 12!
Pamiętaj też o zaokrągleniu podczas dzielenia. Robiąc to na liczbach całkowitych dodaj do dzielnej połowę dzielnika.

To jest prosta matematyka, wręcz na żenującym poziomie. Jedyny problem to to, że zadanie jest źle opisane i trudno zrozumieć treść zadania.


autor pytania namieszał, dał linka do złego zadania (moja odpowiedź się odnosi się do linka). Link do właściwego zadania to: http://pl.spoj.com/problems/PRZEDSZK/

1 użytkowników online, w tym zalogowanych: 0, gości: 1