rand() % 900 генерирует числа от 0 до 899 включительно. Никакой трёхзначности в помине нет.
Проверки того, что число состоит из трёх разных цифр в твоём коде не существует. int n, cnt = 0;
cin >> n;
while (n-- > 0) {
int a = rand() % 9 + 1, b = rand() % 10, c = rand() % 10;
cout