Триподобные числа (Delphi)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by traveller6, 14 Jan 2012.

  1. traveller6

    traveller6 New Member

    Joined:
    10 Jan 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Помогите разобраться с задачей пожалуйста :confused: , я не могу понять что тут хотят (если возможно скиньте решение ;) ):

    Назовем натуральное число триподобным (то есть, подобным числу 3), если его запись содержит только те цифры, которые можно представить в виде степени (с целым показателем) числа 3. Найдите количество триподобных чисел, которые принадлежат промежутку [A; B].

    Технические условия: Программа Like3 должна прочитать с устройства стандартного ввода (клавиатуры) числа A и B, записанные в одну строчку через пробел (1<=A<=B<=1039).
    Программа должна вывести на устройство стандартного вывода (экран) единственное число – искомое количество триподобных чисел.

    Примеры:
    Ввод: 1 10
    Вывод: 3
    Ввод: 11 94
    Вывод: 8
     
  2. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    Как я понял тебе надо найти сколько может быть троек в степени на промежутке.То есть задаем промежуток
    1 10
    3 числа
    3^0
    3^1
    3^2.
     
  3. traveller6

    traveller6 New Member

    Joined:
    10 Jan 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0

    Но как быть в промежутке
    11 94 :confused:

    2 числа
    3^3
    3^4
    и всё, а правильный ответ: 8
     
  4. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    Как-то так
    PHP:
    bool check2(int a)
    {
        return (
    == || == || == 9) ? true false;
    }
    int check(int a)
    {
        while(
    0)
        {
            if(!
    check2(10))
                return 
    false;
            
    /= 10;
        }
        return 
    true;
    }
    ...
    int    count 0,
        
    min 11,
        
    max 94;

    for(
    int i min<= max; ++i)
        
    count += check(i) ? 0;
    ...
    Все цифры, составляющие число, должны быть тройкой в степени. 11, 13, 19, 31, 33, 39, 91, 93
     
    #4 M_script, 14 Jan 2012
    Last edited: 14 Jan 2012