Co w tym kodzie jest błędne? C++

Hej!

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

IN

1
2 ??

Twój out

90

jak dla mnie istnieje 100 różnych liczb, które można wstawić

00
01
02
...
10
11
..
98
99

EDIT

Tak jak przedmówca napisał problemem jest zapewne to że wynik chcesz trzymać w typie int. Dla dużego n jest to nie możliwe.

 

Podpowiedź: Weź kartkę i napisz:

przykład dla jednego znaku zapytania - zapisz wynik

następnie dla dwóch znaków zapytania - zapisz wynik

… rób tak aż zauważysz jakąś zależność. 

 

Zacznij od przypadku kiedy znak zapytania nie jest na początku liczby.

Potem metodą kartki i ołówka sprawdź wyniki kiedy jest na początku liczby.

 

Powodzenia.

Już znalazłem błąd. Nie dotyczy wspomnianej zbyt małej wielkości inta czy nawet long longa. Dużo może wam wyjaśnić prawidłowy input i output:

In:

1

5 ?12345

Out:

1

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).

Czytałem w komentarzach i u nich na forum, że to jest interpretowane jako liczba n-cyfrowa, czyli w moim przykładzie

5 ?12345

Musi zwrócić 1, a cyfrą w miejscu ? jest 0.

Okej można mówić, że 012345 jest liczbą 5-cio cyfrową i z tym się zgadzam. Ale…

.