Con questo codice faccio 0/100 e non capisco il perchè dato che quello che faccio è controllare se alla fine del numero ci sono già 00, 25, 50, 75 o posso in un qualche modo arrivare a metterli. Qualche suggerimento?
#include <bits/stdc++.h>
using namespace std;
int solve () {
string num;
cin >> num;
int N = num.length();
if (N < 2) return 0;
if (num[N - 1] == '0') {
if (num[N - 2] == '0') return 0;
if (num[N - 2] == '5') return 0;
}
if (num[N - 1] == '5') {
if (num[N - 2] == '2') return 0;
if (num[N - 2] == '7') return 0;
}
vector<int> digits(10, 0);
for (int i = 0; i < N; i++) {
digits[num[i] - '0']++;
}
if (num[N - 1] == '0') {
if (digits[0] - 1 >= 1) return 1;
if (digits[5] >= 1) return 1;
}
if (num[N - 1] == '5') {
if (digits[2] >= 1) return 1;
if (digits[7] >= 1) return 1;
}
if (num[N - 2] == '0' && digits[0] > 1) return 1;
if (num[N - 2] == '2' && digits[5] >= 1) return 1;
if (num[N - 2] == '5' && digits[0] >= 1) return 1;
if (num[N - 2] == '7' && digits[5] >= 1) return 1;
if (digits[0] >= 2) return 2;
if (digits[2] >= 1 && digits[5] >= 1) return 2;
if (digits[5] >= 1 && digits[0] >= 1) return 2;
if (digits[7] >= 1 && digits[5] >= 1) return 2;
return -1;
}
int main () {
int T;
cin >> T;
for (int i = 1; i <= T; i++) {
cout << solve() << "\n";
}
return 0;
}