вторник, 15 октября 2013 г.

Задача "Суеверные военные"

В американской армии считается несчастливым число 13, а в японской — 4. Перед международными учениями штаб российской армии решил исключить номера боевой техники, содержащие числа 4 или 13 (например, 40123, 13313, 12345 или 13040), чтобы не смущать иностранных коллег. Если в распоряжении армии имеется 100 тыс. единиц боевой техники и каждая боевая машина имеет номер от 00001 до 99999, то сколько всего номеров придётся исключить?

public class Zadachi{
    public static void main(String[] args){
        //Создадим переменную, в которую будем заносить количество бракованных табличек
        int b=0;
        //С помощью простого цикла переберем все номера боевой техники, которые могут содержать несчастливые числа
        for(int i=4;i<=99994;i++){
            //Для разнообразия я использую тут довольно запутанный способ решения. Преобразуем номер техники к типу String
            String s=String.valueOf(i);
            //Если в строке встречается символ 4 - увеличиваем счетчик, и проверяем следующий номер
            if(s.indexOf('4')!=-1){
                b++;
            }
            //Если символа 4 в строке нет, проверяем есть ли в строке число 13. Для этого проверяем есть ли в строке символ 1, сразу за которым идет символ 3. Если есть - увеличиваем счетчик
            else if(s.indexOf('1')!=-1&s.indexOf('1')+1==s.indexOf('3')){
                b++;
            }
        }
        System.out.println("Нужно исключить "+b+" номеров");
    }
 }

Комментариев нет:

Отправить комментарий