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;
}