Powiedzmy, że chcę sprawdzić, czy liczba n = 123 ma zduplikowane cyfry. Próbowałem:Jaki jest najszybszy sposób sprawdzenia duplikatów cyfr numeru?
#include <iostream>
using namespace std;
int main() {
int n = 123;
int d1 = n % 10;
int d2 = (n/10) % 10;
int d3 = (n/100) % 10;
if(d1 != d2 && d1 != d3 && d2 != d3) {
cout << n << " does not have duplicate digits.\n";
}
}
Czy istnieje szybsze rozwiązanie tego problemu?
Aktualizacja
Przepraszam za to, że niejasne. Powyższy kod został napisany w C++ tylko w celach opisowych. Muszę rozwiązać ten problem w TI-89, z liczbą 9 cyfr. A ponieważ ograniczam pamięć i szybkość, szukam najszybszego możliwego sposobu.
TI-89 ma tylko warunek kilka słów kluczowych:
- Jeśli
- If ... Then
- kiedy (
- Dla ... EndFor
- Chociaż ... ENDWHILE
- Pętla ... EndLoop
- Niestandardowe ... EndCustom
Dzięki
Chan
Ponieważ rozwiązanie jest ograniczona do trzech liczb dwucyfrowych, po prostu zrobić stolik hash z numerów, które mają powtarzające się cyfry i sprawdzić, czy numer jest w niej zawarte. – aaronasterling
Należy również obsługiwać liczby zawierające mniej niż trzy cyfry (jeśli są to prawidłowe dane wejściowe). W tej chwili 'n = 1' zostanie odrzucone jako posiadające zduplikowane cyfry (początkowe zera). – Thilo
W jakim języku w TI-89 pracujesz? –