Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie ze SPOJ-a. Żegnaj lato na rok

Ostatnio zmodyfikowano 2017-07-15 11:26
Autor Wiadomość
pawlowski
Temat założony przez niniejszego użytkownika
Zadanie ze SPOJ-a. Żegnaj lato na rok
» 2017-07-14 19:56:38
Witam. Proszę o pomoc. Oto link do zadania.
http://pl.spoj.com/problems/AL_10_12/

Problem jest taki, że podaje mi błedną odpowiedź przy większych liczbach np. przy takich zestawach
7 85 605
3329 1856634276

Moja odp: 286555299
powinna być: 286431001
albo:
32 1070 34241
6113 1816738229

Moja odp: 58416191
powinna być: 58415995

Oto mój kod:
C/C++
#include <iostream>
using namespace std;
unsigned int NWD( unsigned int x, unsigned int y )
{
    while( x != y )
    {
        if( x > y ) x -= y;
        else y -= x;
       
    }
    return x;
}
unsigned int NWW( unsigned int v, unsigned int z )
{
    return( v * z ) / NWD( v, z );
}
int main()
{
   
    unsigned int a, b, c;
    cin >> a >> b >> c;
    unsigned int n, m, x = 0, k = 0;
    while( cin >> n )
    {
        cin >> m;
        x =( m / a ) +( m / b ) -( m / NWW( a, b ) );
        k = x +( m / c ) -( x / c );
        cout << k << endl;
    }
    return 0;
}








P-163304
pekfos
» 2017-07-14 20:03:19
Twój algorytm jest błędny. Nawet nie używasz wszystkich danych.
P-163305
pawlowski
Temat założony przez niniejszego użytkownika
» 2017-07-14 20:05:38
Dziękuje za bardzo szybką odpowiedź. Domyśliłam się już wcześniej, że musi być jakiś błąd. Proszę o naprowadzenie, gdzie tkwi błąd i jakich wszystkich danych nie używam.
P-163308
pekfos
» 2017-07-14 20:24:26
Za to ty nie powinieneś udzielać bardzo szybkich odpowiedzi. Masz 2 linie kodu obliczeń i 5 zmiennych z danymi. Jeśli sam nie jesteś w stanie prześledzić, czy używasz wszystkich danych, to nie ma co ciągnąć tego tematu.
P-163310
pawlowski
Temat założony przez niniejszego użytkownika
» 2017-07-14 20:57:32
Zaczynam. Chyba możesz zrozumieć. Dlatego proszę o pomoc.
Jak mniemam, nie skorzystałem z danej n?
P-163312
pekfos
» 2017-07-14 21:07:56
Tak. I może masz też overflow w v * z w NWW().
P-163313
pawlowski
Temat założony przez niniejszego użytkownika
» 2017-07-14 21:32:03
Z tą zmienną n to rzeczywiście. Póki co na małych liczbach wszystko pięknie wychodziło. Wszystko kombinowałem na kartce na małych liczbach, teraz będzie problem sprawdzić to na dużych liczbach.
Wiem, że to zabrzmi dla niektórych żałośnie, ale nie ogarniam na czym polega ten błąd overflow
P-163314
pekfos
» 2017-07-14 21:45:34
Wynik mnożenia dwóch intów nie musi się mieścić w incie.
P-163315
« 1 » 2
  Strona 1 z 2 Następna strona