Mam każde inne zadanie z themisa, z tym męczę się od ponad roku. Próbowałem rozdzielać to na dzielenie przez 2,3 i 7 ale pokazuje błędny wynik lub time limit.
Teraz spróbowałem całkowicie zmienić algorytm i podzielić od razu przez 42, wysyłam z tego kod.
//dzielenie od razu przez 42
#include <iostream>
using namespace std;
int main()
{
int n;
int tab[7] = {10, 16, 34, 4, 40, 22};
int tab1[7] = {22, 40, 4, 34, 16, 10};
cin >> n;
string s[10];
int wynik = 0;
int iterator = 5;
for (int i = 0; i < 9; i++)
{
cin >> s[i];
for (int j = 0; j < 3; j++)
{
wynik += ((s[i][j] - '0') * tab1[iterator % 6]) % 42;
iterator++;
}
}
for (int j = 0; j < 2; j++)
{
wynik += ((s[9][j] - '0') * tab1[iterator % 6]) % 42;
iterator++;
}
wynik += s[9][2] - '0';
if (wynik % 42 == 0)
{
cout << "NIE";
}
else
cout << "TAK";
return 0;
}
//dzielenie przez 2, 3 i 7
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
string s[10];
int wynik = 0;
int ost = 0;
for (int i = 0; i < n; i++)
{
int suma3 = 0;
for (int i = 0; i < 10; i++)
{
cin >> s[i];
wynik = 0;
suma3 = s[i][0] - '0' + s[i][1] - '0' + s[i][2] - '0';
wynik += ((s[i][0] - '0') * 2 + (s[i][1] - '0') * 3 + (s[i][2] - '0') * 1) % 7;
if (i % 2 == 0)
wynik *= -1;
ost += wynik;
ost = ost % 7;
}
if ((s[9][2] - '0') % 2 == 0 && suma3 % 3 == 0 && ost == 0)
{
cout << "NIE" << endl;
}
else
cout << "TAK";
}
return 0;
}
plz help