Загрузка...

Нужен код на С++

Тема в разделе C/C++ создана пользователем myfurms 3 апр 2018. 383 просмотра

Загрузка...
  1. myfurms
    myfurms Автор темы 3 апр 2018 ... 46 3 фев 2018
    Программа должна уметь посчитать сколько цифр с Y, содержится в N числе.
    Например я ввожу в прогу от 0 до 20
    и пишу там же что мне нужны цифры с 2, а прога должна вывести количество таких цифр. ( ответ : 3)
     
  2. AMiKZ
    AMiKZ 7 апр 2018 4 14 апр 2017
    Можно пожалуйста нормальным языком, как отпишешь "русским" языком, что и как должно работать, мб помогу
     
  3. myfurms
    myfurms Автор темы 7 апр 2018 ... 46 3 фев 2018
    что тебе конкретно не понятно? Вот мне дали задание сказать сколько ЧИСЕЛ в которых есть цифры 3 либо 0 (хотябы что то одно, или сразу два ) в ЧИСЛАХ от 100 до 999 включительно, когда посчитал вручную, мне скзаали написать прогу на с++ для проверки
     
  4. Orexa01
    Orexa01 9 апр 2018 0 18 фев 2018
    Попробу
     
  5. Orexa01
    Orexa01 9 апр 2018 0 18 фев 2018
    Попробуй напиши примерно так, загони числа в массив, естественно от 0 до 20 и потом начни их делить на десятки и единицы , например: число "12", первое число "1", второе число "2", и мы делим каждое число на "2", если при деление число число получается "1", то мы записываем данное число в массив в качестве единицы, если получается какоето другое число, то в массив мы пишем "0", тогда после этого мы складываем все числа в массиве и получатся твой ответ.
     
  6. myfurms
    myfurms Автор темы 9 апр 2018 ... 46 3 фев 2018
    я не умею это писать, поэтому и прошу, сделаешь то тогда с меня симпа
     
  7. MrMini
    MrMini 9 апр 2018 12 10 мар 2018
    Используй формулу...
     
  8. BadTorrent
    BadTorrent 14 апр 2018 24 18 апр 2014
    Orexa01, заёб такое делать лол :D и не факт что на больших примеров будет работать..
    MrMini, Формула норм идея, ведь видно что то же число появляется один раз в 10 номеров,и легко определить ответ.. НО.. формула не будет работать потому-что от него требуеться вывести частоту номеров где есть либо одно число, либо другое, по этому формула будет считать некоторые номера 2 раза, и их пересечение нужно будет как-то вывести.. По этому лучше всего просто сделать **** версию формулы..

    Решение :
    Код

    #include <bits/stdc++.h>

    using namespace std;

    int a,b,c,d,i,viz[100005],nr;

    int len(int b)
    {
    int q=0;
    while (b)
    {
    q++;
    b/=10;
    }
    return q;
    }

    int main()
    {
    cin>>a>>b; //a - первый номер, b - второй (как в твоём примере, а = 100, b = 999)
    cin>>c>>d; //c и d цифры которые будешь искать (в твоем примере 0 и 3)
    for (i=c; i<=b; i+=10)
    viz[i]=1;

    for (i=d; i<=b; i+=10)
    viz[i]=1;

    for (i=1; i<=len(b); i++)
    viz[c*(int)pow(10,i)]=1;

    for (i=1; i<=len(b); i++)
    viz[d*(int)pow(10,i)]=1;


    for (i=a; i<=b; i++)
    if (viz[i]==1) nr++;

    cout<<nr;
    }
    Если что-нибудь не понятно, спрашивай.
     
Top