Хобрук: Ваш путь к мастерству в программировании

Как сгенерировать n-е число, состоящее только из четных цифр?

Я новичок в программировании. Я могу найти числа, состоящие из четных цифр, но сложность моего алгоритма O (n). Для больших n мой алгоритм слишком медленный. Поэтому мне нужен более эффективный алгоритм. Может кто-нибудь помочь мне?

Например, первые числа с четными цифрами — это 0, 2, 4, 6, 8, 20, 22, 24, 26, 28, 40 и т. д. 2686 — еще один пример числа с четными цифрами.

Вот мой код: http://ideone.com/nsBzej

#include<bits/stdc++.h>
using namespace std;
long long int a[10],b[20];
long long int powr(int i)
{
    long long int ans=5;
    for(int j=2;j<=i;j++)
    {
        ans=ans*5;
    }
    return ans;
}
int main()
{
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);

    long long int n,s,sum,p;
    int t;
    cin>>t;
    for(int j=1;j<=t;j++)
    {
        s=20,sum=0;
        a[1]=0, a[2]=2, a[3]=4, a[4]=6, a[5]=8;

        for(int i=1;i<=17;i++)
        {
            b[i]=s;
            s=s*10;
        }

        cin>>n;
        for(int i=17;i>=1;i--)
        {
            p=powr(i);
            while(p<n)
            {
                sum=sum+b[i];
                n=n-p;
            }
        }

        printf("Case %d: %lld\n",j,sum);
    }
}

Это сложность O(n). Но я получаю неверный вердикт.


  • Каково ваше определение четной цифры? Почему 10 не четная цифра? 05.09.2016
  • Можете ли вы показать нам, что вы пробовали? 05.09.2016
  • Я думаю, он имеет в виду, что хочет найти только числа, у которых все цифры четные: 10 имеет 1 как цифру, которая является нечетной. 05.09.2016
  • @Wallkan: Пахнет домашней работой XD 05.09.2016
  • дорогой, Это недавняя проблема с конкурсом. Этот конкурс закончился 2 дня назад.. Я пытаюсь решить это 2 дня, но у меня ничего не получается. 05.09.2016
  • Поскольку вы не представили никаких проблем с программированием или кодом, с которым у вас возникли проблемы, этот вопрос не относится к теме stackoverflow. Вы можете попробовать математический обмен. 05.09.2016
  • @ user2079303: 10 не является ни четной, ни нечетной цифрой. 05.09.2016
  • Уважаемый @2501. Мне нужна эффективная идея решения, как решить эту проблему. По словам @Wallkan ниже идея комментария не работает 1 секунду. Это ограничение по времени вердикта. 05.09.2016
  • Ответ: 224682000000000000. Алгоритм прост: вычислить 1000000000000 по основанию 5, затем заменить каждую цифру d на 2d. Хотя это очень плохо написано, это интересный вопрос, который следует вновь открыть, ИМО. 05.09.2016
  • @Olaf 10 вовсе не цифра, как и 20. Они представляют собой комбинации двух отдельных цифр. 05.09.2016
  • @barakmanos На каждый вопрос по теме на SO существует бесконечное количество интересных вопросов, которые также не относятся к теме. 05.09.2016
  • Уважаемый, barak manos .Вот так .. long long int ans=5; for(int j=2;j‹=i;j++) { ans=ans*5; } вернуть ответ; 05.09.2016
  • @2501: Из-за отсутствия фактического кода он, вероятно, больше подходит для math.stackexchange.com (или, по крайней мере, для другого тег здесь). 05.09.2016
  • @AseemChakrabarthy: Если вам просто нужен алгоритм, отметьте его соответствующим образом. Если вам нужно решение для конкретного языка, пожалуйста, поделитесь своим кодом должным образом, чтобы этот вопрос стоил повторного открытия. 05.09.2016
  • @barakmanos Вы перефразировали мой комментарий, сделанный некоторое время назад. 05.09.2016
  • @ user2079303: Отлично, вы поняли смысл моего комментария :-) 05.09.2016
  • Дорогой, @barakmanos, спасибо, понял. 05.09.2016
  • @barakmanos это может начаться с 0-го. (n = 1, поэтому ответ = 0 из сообщения Асима) 05.09.2016
  • @BLUEPIXY: ответ = 0? 05.09.2016
  • @barakmanos см. это комментарий 05.09.2016
  • @BLUEPIXY: я до сих пор не понимаю, почему ответ может быть 0. Я бы понял, если бы вы сказали, что ответ был одним числом до или после 224682000000000000, но почему это должно быть 0??? 05.09.2016
  • @AseemChakrabarthy: Преобразуйте 1000000000000 в основание 5. Замените каждую цифру d на 2d. Временная сложность равна O(log(1000000000000)), где log находится в базе 5 (не то, чтобы это имело значение для сложности). 05.09.2016
  • @barakmanos случай 1-го равен 0. т.е. 224680888888888888 05.09.2016
  • @BLUEPIXY: Хорошо, тогда просто возьмите мой алгоритм и примените его к 999999999999. 05.09.2016
  • Уважаемый,barak monos Поиск позиции. цифра состоит из числа для значения n; если n = 1 - это позиция 1, а четная цифра первой позиции равна 0, аналогично n = 2 - это позиция, вторая цифра события состоит из 2 и т. д. 05.09.2016
  • @barakmanos да, я знаю. 05.09.2016
  • Спасибо #BLUEPIXY за редактирование. 05.09.2016
  • Актуальный вопрос, как я могу сгенерировать 1e12-е число, все цифры которого четные? 05.09.2016

Ответы:


1
  • Если вы запускаете несколько числовых, таблица создается заранее. 08.09.2016
  • Спасибо @BLUEPIXY. Я понял. 10.09.2016
  • Новые материалы

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..