• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przyspieszenie programu

Object Storage Arubacloud
0 głosów
399 wizyt
pytanie zadane 31 grudnia 2016 w C i C++ przez czujek22 Dyskutant (7,670 p.)
edycja 31 grudnia 2016 przez czujek22

Witam. Robię zadanie Gra Euklidesa ze Spoj.com i skończyłem je. Chyba działa, pewnie można to zrobić w prostszy sposób ponieważ spoj pokazuje, że program wykonuje się zbyt wolno o 0,01s :D Jak można go przyspieszyć ?

 

#include <iostream>

using namespace std;

int main()
{
    int ile;
    int I_gracz,II_gracz;
    int mniejsza;
    int dodatek1 = 0, dodatek2 = 0;

    cin>>ile;

    for(int i=0; i<ile; i++)
    {
        cin>>I_gracz>>II_gracz;

        while((I_gracz - dodatek1) != (II_gracz - dodatek2))
        {
            if (I_gracz<II_gracz)
            {
               mniejsza = I_gracz;
               I_gracz +=mniejsza;
                dodatek1 = mniejsza;
                II_gracz -=mniejsza;
            }
            else if(I_gracz>II_gracz)
            {
                mniejsza=II_gracz;
                II_gracz +=mniejsza;
                dodatek2 = mniejsza;
                I_gracz -=mniejsza;
            }
        }
        if((I_gracz - dodatek1)==(II_gracz-dodatek2))
            cout<<(I_gracz - dodatek1)+(II_gracz-dodatek2)<<endl;

    }

    return 0;
}

 

komentarz 31 grudnia 2016 przez Pajdas Mądrala (5,930 p.)
Może wystarczy zamiast else if(I_gracz>II_gracz) dać po prostu else...

Myślę, że o 0,01s przyspieszy :)

0,01s to jest tak mało, że kwestia temperatury ramu i procka może dużo zmienić

1 odpowiedź

0 głosów
odpowiedź 31 grudnia 2016 przez morele123 Gaduła (4,790 p.)
Co ty robisz z tym dodatek ? Przecież masz podać tylko liczbę żetonów w grze.

a - żetony 1. gracza, b - żetony 2. gracza.

a>b:

a=a-b

b>a

b=b-a

 

I powtarzasz aż a=b.

Po za tym nie rób else if, jeżeli wystarczy samo else.
komentarz 31 grudnia 2016 przez VirtualMember Pasjonat (15,790 p.)
Nie wiem czy w tym zadaniu tak ma być ale jak zrobi else to będzie inne działanie programu. Zobacz, że ma w jednym przypadku zbiór (-nsk; 0) a w drugim (0; +nsk) więc nie rozpatruje zera.
komentarz 31 grudnia 2016 przez morele123 Gaduła (4,790 p.)
Nie analizowałem, za bardzo jego kodu, nie zwracałem uwagi na przypadki graniczne. Po za tym, ten jeden if jest mało ważny, więc może zostać. Chodzi głównie o to, że zapamiętuje to co jest nie potrzebne, czyli jakiś dodatek.
komentarz 31 grudnia 2016 przez czujek22 Dyskutant (7,670 p.)

dodatki robily tu jako części żetonów, których przeciwnik nie może pobierać. Polecenie mnie troche wkręciło w inny tok myślenia ale wykonałem to tym prostszym sposobem który podałeś.

komentarz 31 grudnia 2016 przez morele123 Gaduła (4,790 p.)
Czyli zapamiętywałeś żetony, które nie są w grze. Jednak po co do tego aż dwie zmienne.

Podobne pytania

0 głosów
2 odpowiedzi 889 wizyt
pytanie zadane 7 marca 2017 w C i C++ przez styrczu Obywatel (1,050 p.)
0 głosów
1 odpowiedź 494 wizyt
0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 3 listopada 2018 w C i C++ przez kamyk2 Początkujący (420 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...