AC
Jak mozna przyspieszyc ten program?
Przekroczono limit czasu.
created
last reply
- 15
replies
- 1.7k
views
- 9
users
- 4
links
AC
Jak mozna przyspieszyc ten program?
Przekroczono limit czasu.
Tak się nie wczytuje nieokreślonej ilości danych - aż do EOF.
Jeżeli używasz scanf, yo:
while (scanf(.....) != EOF)
gdzie EOF to najczęściej -1, więc można też tak:
while (scanf (,,,,) != -1)
Jeżeli używasz cin, to właśnie tak jak masz:
while (cin >> c >> d){
....
PS
To co wkleiłeś [kod] nie kompiluje się, ale nie ważne.
wczytywanie masz odwrotnie niż deklaracje.
2 x minus daje plus.
a i b <2^31 ale czy a * b też?
Może coś jeszcze?
Jeżeli amount jest typu int, to ta linia wydrukuje CI głupoty, a tak nawiasem, testujesz swój program na danych z zadania? Jeżeli nie u siebie, to możesz to robić na ideone.com , wklejając i swój kod i test
To prawda, a nawet więcej:
2^31 * 2 ^31 < long long int
ale to nie znaczy, że nie miałeś tam błędu. Npisz sobie programi, podstaw różne wartości,potestój a wtedy możemy podyskutować Np coś takiego:
int a = 1000000000, b = 1000000000;
[unsigned] long long c;
c = a* b;
cout << c << endl; // pewnie nie wiesz czemu to jest źle? Napisz programik i potestuj
AD 2
Czy ja gdziekolwiek wspominałem o odejmowaniu czy dzieleniu?Może tylko, że dwa razy minus to plus, bo to miałeś też zrypane.
AD 3
Nie ma za co, ale błędów było trochę więcej, a nie tylko samo wczytywanie. Wczytywanie nie zaważyło, ale przepełniło czare.
PS
A wstawienie wszędzie typu long long może spowodować tle w innych zadaniach, więc trzeba nauczyć się ich oszczędnego i uzasadnionego [tam gdzie są faktycznie potrzebne] używania.
Mam problem z zaliczeniem tego zadania, sędzia daje WA, na ideone http://ideone.com/AzVawL20 przechodzi bez problemu. Nie wiem gdzie leży błąd. Proszę o jakąś wskazówkę. Tak swoją drogą na poziomie łatwe sędzia mógłby podawać dla jakich danych nie przechodzi kod...
Naprawdę!?
więc sprawdż dla dowolnego testu:
test<enter>
test<enter
<eof>
Twój kod działa tylko dla:
test<enter>
test<eof>
http://ideone.com/LQiawP11
Nie rozumiem, czemu zmieniłeś prawidłowe wczytywanie:
while (cin >> x >> y) ...
na błędne:
....while(!cin.eof())
A potem, przetestuj np [np na ideone]:
3 5
1 2147483647
PS
I co jeszcze? parzył kawę i głaskał po główce? -
Sędzia działa jak działa, można przyjąć, że znajduje pierwszy błąd - tu już na małym teście masz WA i dalej już nie sprawdza. Gdy poprawisz, wrócisz, do poprawnego wczytywania, pierwszy mały test będzie ok, ale na następnym, większym będzie natychmiast tle. W taki sposób tego zadania nie zaliczysz - nawet na ideone.com, np dla testu:
3 5
1 2147483647
out [liczyłem na piechotę], to:
1002159035
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 171 | Feb 1 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 137 | Apr 2 |
SPOJ.com - Problem ZABAWA pl.spoj.com | Zbiór zadań | 6 | 98 | 27d |