Есть задачка, найти сколько чисел до 1000 в которых не повторяются цифры. Пытаюсь решить простым перебором, каждого числа в стринг и далее проверяю каждое число на совместимость. 1. Правильно ли я делаю 2. Как можно вычислить это все в уме, что то не вижу выделенной логики что не повторящиеся цифры до 100 это 91, а до 1000 это 739.
public static void main(String[] args) {
int count = 91;
for (int i = 100; i < 1000; i++) {
String s = String.valueOf(i);
if (s.charAt(0) == s.charAt(1) || s.charAt(0) == s.charAt(2) || s.charAt(1) == s.charAt(2)) {
continue;
}
count++;
}
System.out.println(count);
}
Логика здесь простая. Однозначных чисел в нас 9 (исключим 0), все подходят под условие.
Дальше, считаем сколько двузначных. Для этого берем все однозначные, и дописываем одну цифру. Что бы цифры не повторялись, у нас есть только 9 вариантов. Итого, количество двузначных чисел, которые подпадают под условие:
9 * 9 = 81
Количество нужных чисел от 0 до 99 будет:
1 + 9 + 81 = 91 // 0 + однозначные + двузначные
Количество трехзначных чисел: берем все двузначные и дописывает 1 цифру. Всего вариантов на новую цифру уже 8:
81 * 8 = 648
Количество нужных чисел от 0 до 999 будет:
91 + 648 = 739 // (от 0 до 99) + трехзначные
И т. д.
Ну если перебором, так уже делать по уму
int countDup(int from, int to) {
int res = 0;
Set<Integer> nums = new HashSet<>();
for (int i = from; i <= to; i++) {
nums.clear();
int cur = i;
boolean dups = false;
do {
if (!nums.add(cur % 10) {
dups = true;
break;
}
cur /= 10;
} while (cur != 0);
if (!dups)
res++;
}
return res;
}
System.out.println(countDup(0, 1000));
Как можно вычислить это все в уме, что то не вижу выделенной логики что не повторящиеся цифры до 100 это 91, а до 1000 это 739.
Ну и проверка перебором:
res=0;
for (x=0; x<1000; ++x) res += !/(.).*\1/.test(x)
console.log(res)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Для вывода даты используя формат в таком виде:
Нужно шифровать UDP соединение c помощью TLS, JSSE вроде бы поддерживает DTLS, но я не могу найти примеровНекоторые говорят, вообще вроде бы deprecated,...
Добрый день! Подскажите как отсортировать файл со строками в java?