Mam problem z zadaniem
Niech n będzie dodatnią liczbą całkowitą i niech a1, a2, …, an będzie ciągiem nieujemnych liczb całkowitych. Dla pary liczb i, j takich, że 1 ≤ i ≤ j ≤ n, blokiem b(i,j) nazywamy podciąg kolejnych elementów ciągu a z pozycji od i do j, czyli ai, ai+1, …, aj. Długością bloku nazywamy liczbę jego elementów. O bloku, którego suma elementów jest podzielna przez 3 mówimy, że jest blokiem trójkowym.
Przykład:
W ciągu 0,0,2,3,2,1,2 najdłuższym blokiem trójkowym jest b(4,6) = 3,2,1.
W plikach tekstowych bloki1.txt, bloki2.txt i bloki3.txt zapisano ciągi odpowiednio 1000, 30000 i 1000000 nieujemnych liczb całkowitych mniejszych od 10 000. W każdym pliku liczby zapisano w kolejnych wierszach, po jednej liczbie w każdym wierszu.
Dla każdego pliku z danymi wyznacz długość najdłuższego bloku trójkowego w ciągu zapisanym w tym pliku.
Przykład:
Dla danych z pliku z 7 liczbami: 0
0
2
3
2
1
2
długość najdłuższego bloku trójkowego wynosi 3.
Do oceny oddajesz plik(i) o nazwie(ach) ………………………………………………
tu wpisz nazwę/nazwy pliku/plików
zawierający(e) komputerową realizację Twoich obliczeń oraz pliki tekstowe wyniki1.txt, wyniki2.txt, wyniki3.txt, gdzie każdy z nich zawiera liczbę równą długości najdłuższego bloku trójkowego w ciągach zapisanych odpowiednio w plikach bloki1.txt, bloki2.txt i bloki3.txt.
oto część mojego programu,zliczam sume cyfr ,a następnie sprawdzam,czy dana suma przy dzieleniu przez 3 daje resztę 0,niestety,ale to nie działa :(
#include <iostream> #include<fstream> using namespace std; int suma_cyfr(int n) { int s=0; while(n>0) { s=s+n%10; n=n/10; } return s; } int main() { int b; ifstream we("blok_A.txt"); for(int i=0;i<1000;i++) { we>>b; if(suma_cyfr(b)%3==0)cout<<b<<endl; } return 0; }