Mam problem z zadaniem z serwisu SPOJ zabawne dodawanie Piotrusia. Program działa dla liczb jednocyfrowych, gdy wpiszę do niego liczbę 10 program pokazuje, że jest ona palindronem, a gdy wpiszę liczbę większą niż 10 wyświetla mi się program przestał działać i nie mogę znaleźć błędu. Link do zadania: http://pl.spoj.com/problems/BFN1/
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int liczba, n, ileDodawan = 0, liczba2, ileCyfr;
bool czyLiczbaJestPalindronem = false;
cin >> n;
for (int i = 0; i<n; i++) {
cin >> liczba;
czyLiczbaJestPalindronem = false;
while (!czyLiczbaJestPalindronem) {
//obliczenie ilo cyfrowa jest liczba
ileCyfr = 1;
while (liczba/(10^ileCyfr)!=0) {
ileCyfr++;
}
//sprawdzenie czy liczba jest palindronem
for (int j = 0, k = ileCyfr-1; j<=ileCyfr; j++, k--) {
if ((liczba/(10^j))%10!=(liczba/(10^k))%10) {
czyLiczbaJestPalindronem = false;
break;
} else {
czyLiczbaJestPalindronem = true;
}
}
//jeœli liczba nie jest palindronem to obliczenie sumy tej liczby z jej lustrzanym odbiciem
liczba2 = 0;
if (!czyLiczbaJestPalindronem) {
for (int j = ileCyfr-1; j>=0; j--) {
liczba2 = liczba2*10 + (liczba/(10^j))%10;
}
liczba += liczba2;
ileDodawan++;
}
}
cout << liczba << " " << ileDodawan << endl;
}
return 0;
}