-
Sumy wielokrotne
Mam kolejny raz problem z tym samym zadaniem chociaż robię je któryś raz od początku.
Chodzi o to zadanie (link): https://pl.spoj.pl/problems/KC008/
Kod:
#include <iostream>
using namespace std;
int main ()
{
int liczba, suma = 0;
long long sumak = 0; /* suma koncowa */
while(cin >> liczba)
{
if(liczba != 0) {suma += liczba;}
else
{
cout << suma << endl;
sumak += suma;
suma = 0;
}
}
cout << sumak << endl;
return(0);
}
Dla podanych danych testowych działa dobrze, podobnie jak dla moich wymyślonych.
-
Dość długo siedziałem kiedyś w tych zadaniach na SPOJu i często miewałem podobne problemy - trywialne zadanie, mi podaje prawidłowy wynik a jak wyśle to jest zły.
Jakby to były liczby zmiennoprzecinkowe to bym powiedział, że masz odchylenia w dokładności, ale tutaj tego powiedzieć się raczej nie da.
Prawdopodobnie masz coś źle z "sumak", bo to w pętli mi się wydaje dosyć dobrze zrobione.
Popróbuj z innymi operatorami przy tej zmiennej (może 'long int' po prostu?).
Chociaż może wystarczy jak dodasz "unsigned" bo o ile pamiętam to w treści zadania nie ma warunku czy te liczby są dodatnie.
-
Niestety, liczby ujemne też wchodzą w grę.
-----
Z komentarz wywnioskowałem (źle), że sumak ma być long long, a jednak wszystkie powinny takie być.
Problem rozwiązany.