Grade 9 · Digits of a numberCitește în română
Checking for distinct digits
Original: Verificarea cifrelor distincte
O(n)C++1748 lines2 examples
The idea
Checks whether all digits of n are different. We remember which digits we have already seen (vazut[c] becomes true on the first occurrence of c); if we meet a digit we have already seen, the answer is NO.
Original description (Romanian)
Verifică dacă toate cifrele lui n sunt diferite. Ținem minte ce cifre am văzut deja (vazut[c] devine true la prima apariție a lui c); dacă dăm peste o cifră deja văzută, răspunsul este NU.
- Complexity
- O(k), where k is the number of digits of n
- Grade
- Grade 9 (Clasa a IX-a)
- Chapter
- Digits of a number
Examples
Example 1
Input
9071
Expected output
DA
Example 2
Input
1231
Expected output
NU
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Verificarea cifrelor distincte
* Clasa: 9
* Capitol: Cifrele unui număr
* Descriere: Verifică dacă toate cifrele lui n sunt diferite. Ținem minte ce
* cifre am văzut deja (vazut[c] devine true la prima apariție a lui c);
* dacă dăm peste o cifră deja văzută, răspunsul este NU.
* Complexitate: O(k), unde k este numărul de cifre ale lui n
*
* Exemplu
* Intrare: 9071
* Ieșire: DA
*
* Exemplu
* Intrare: 1231
* Ieșire: NU
*/
#include <iostream>
using namespace std;
int main()
{
long long n;
bool vazut[10] = {false};
bool distincte = true;
cin >> n;
do
{
int cifra = n % 10;
if (vazut[cifra])
{
distincte = false;
}
vazut[cifra] = true;
n = n / 10;
}
while (n > 0);
if (distincte)
{
cout << "DA" << '\n';
}
else
{
cout << "NU" << '\n';
}
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.