Robiłem zadanie ze SPOJa. Mój kod działa na wszystkich moich przykładach jednak jest odrzucony jako błędny (zły wynik). Czym może być to spowodowane? Kompilator u nich na serwerze, to G++ 4.3.2. Oto mój kod:
#include <iostream>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(0); //Usuwa problemy z wydajnością.
int t, a;
int wynik = 1;
string s;
cin >> t; //Liczba przypadków testowych.
while(t) {
cin >> a; //Pierwsza liczba, w moim rozwiązaniu zbyteczna.
cin.ignore(10, ' '); //Usuwam zawartość bufora, aby uniknąć błędnego odczytu przez getlne
getline(cin, s);
if (s[0] == '?') //Jeżeli pierwsza cyfra jest znakiem zapytania, to wynik jest mnożony razy 9
wynik *= 9;
for (int i = 1; i < s.length(); ++i) {
if (s[i] == '?') {
wynik *= 10; //Jeżeli każda kolejna, to ynik jest mnożony razy 10
}
}
cout << wynik << endl;
wynik = 1; //Przywrócenie początkowego stanu wyniku
t--;
}
return 0;
}
Nie, żeby coś, ale to wejście nie jest zgodne z treścią zadania
Jak rozumiem chodziło o
1
6 ?12345
I tu raczej nie ma wątpliwości, że jest to 9
Jak na moje mogłeś jeszcze nie uwzględnić prostego
1
1 ?
gdzie nie powinieneś zwracać 9, a 10, bo 0 jest wtedy poprawne w zapisie dziesiętnym liczby (chyba? zadanie nie jest dobrze uściślone co jest, a co nie jest poprawną liczbą, tak więc to moje domysły).