Jednocyfrowa suma cyfr liczby

0

Potrzebuję obliczyć jednocyfrową sumę cyfr dużej liczby. Standardowo można to robić dla np liczby 985 9+8+5=22 , 2+2=4 moje pytanie czy mogę to robić 9+8=17 1+7=8 8+5= 13 1+3=4, pozwoli mi to zmieścić się podczas obliczania sumy w standardowych typach tylko pytanie czy ten sposób działa dla każdej liczby czy tylko miałem szczęście i trafiłem w taką?

0

Poczytaj o reszcie z dzielenia przez 10 (modulo)

0

Możesz podpowiedzieć coś więcej? Ogólnie co to jest modulo to wiem, chodzi mi o poprawność tego algorytmu. Ogólnie problem przedstawia się tak że mam liczbę potencjalnie dowolnej długości zapisaną np w tablicy i jak chcę zliczyć kolejno jej cyfry dodając do siebie może dojść do sytuacji że zabraknie standardowej zmiennej, więc chcę zrobić coś w stylu że biorę 1 cyfrę dodaję do 2 jeśli wynik większy od 10 to znowu cyfry powstałej liczby dodaje do siebie następnie dodaję kolejną cyfrę(3) sprawdzam czy suma większa od 10 itd wię

0

Gdy użyjesz unsigned long long int do przechowywania sumy cyfr to musiałbyś mieć liczbę składającą się z conajmniej 2 049 638 230 412 172 402 cyfr, co daje około 1 864 135 terabajtowego stringa charów, aby wyjść poza zakres.

0

Po każdym dodaniu jeżeli wyszło więcej niż 9 to odejmij 9

0

masz racje, tylko problem jest taki że w zadaniu mam liczbę nieznanej długości. Już ją wczytywałem do dynamicznej tablicy indeksowanej long long intem i dostałem informacje że zadanie nie jest dobrze rozwiązanie bo typ jest ograniczony. Na chwile obecną zdaje sobie sprawę że przeciętny użytkownik nie ma tyle ramu by program sie posypał ale teoretycznie jest to możliwe. Niestety nie ja tutaj ustalam warunki :/

0

Ja bym napisał funkcję która w pętli (dopóki liczba jest większa od 10) dodaje do wyniku resztę z dzielenia przez 10, i dzieli liczbę przez 10. na koniec do wyniku dodajemy tą jednocyfrową liczbę, i wywołujemy funkcję (najpierw sumą stringa początkowego a potem jej wynikami) dopóki nie da jednocyfrowego wyniku.

0

Moja odpowiedź była skierowana do użytkownika Sopelek

_13th_Dragon dzięki za sugestie

Ogólnie problem nie leży we wczytywaniu liczby czy danej cyfry, tylko jak to zrobić najprościej żeby uniknąć pisania np własnej biblioteki do działań na tych nieskończonych liczbach bo tracę na czasie(pisania kodu i wykonywania programu ) oraz na pamięci(której na dobrą sprawę zgodnie z warunkami zadania i tak mam za mało)

1 użytkowników online, w tym zalogowanych: 0, gości: 1