using System;
using System.Collections.Generic;
class Program
{
static List<int> GenerateDistinctDigitNumbers(int N, int L)
{
HashSet<int> results = new HashSet<int>(); // store unique valid numbers
int lower = (int)Math.Pow(10, L - 1); // smallest L-digit number (e.g., 10000 for L=5)
int upper = (int)Math.Pow(10, L) - 1; // largest L-digit number (e.g., 99999 for L=5)
Random rnd = new Random(); // random number generator
// keep generating until we have N distinct-digit numbers
while (results.Count < N) {
int num = rnd.Next(lower, upper + 1); // generate random L-digit integer
string s = num.ToString(); // convert number to string
// check if all digits are unique
HashSet<char> digitSet = new HashSet<char>(s);
if (digitSet.Count == L) {
results.Add(num); // add to set (ensures no duplicates)
}
}
return new List<int>(results); // convert set to list
}
static void Main()
{
var nums = GenerateDistinctDigitNumbers(10, 5);
Console.WriteLine(string.Join(", ", nums));
}
}
/*
run:
53084, 59370, 41538, 90573, 21674, 98416, 93841, 26450, 32780, 18093
*/