Zadanie ze SPOJ-a. Żegnaj lato na rok
Ostatnio zmodyfikowano 2017-07-15 11:26
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 1856634276Moja odp: 286555299 powinna być: 286431001 albo: 32 1070 34241 6113 1816738229Moja odp: 58416191 powinna być: 58415995 Oto mój kod: #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; }
|
|
pekfos |
» 2017-07-14 20:03:19 Twój algorytm jest błędny. Nawet nie używasz wszystkich danych. |
|
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. |
|
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. |
|
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? |
|
pekfos |
» 2017-07-14 21:07:56 Tak. I może masz też overflow w v * z w NWW(). |
|
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 |
|
pekfos |
» 2017-07-14 21:45:34 Wynik mnożenia dwóch intów nie musi się mieścić w incie. |
|
« 1 » 2 |