1

Есть задача,подсчитать количество натуральных чисел в диапазоне [a,b), в которых младшая цифра кратная заданной. Застрял на том как выделить младшую цифру. Большое спасибо!

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv)
{
    int a;
    int b;
    int k;
    int c;
    int count = 0;
    cout << "input chislo";
    cin >> k;
    cout << "a=";
    cin >> a;
    cout << "b=";
    cin >> b;

    while (a < b)
    {
        while (a > 0)
        {
            c = a % 10;

            if (c % k == 0)
            {
                count += 1;
            }
        }

        a += 1;
    }

    cout << "kilkist = " << count << endl;
    system("pause");
    return 0;
}
Harry
  • 221,325
Awesome Man
  • 684
  • 3
  • 15
  • 31

1 Answers1

4

Если вас интересует только как найти младшую цифру десятичной записи числа n - то это n%10.

Update
А теперь скажите, меняется ли значение a в теле цикла while (a > 0)?
Правда, вряд ли?
Так что a всегда больше нуля?
Так что цикл вечный?

Но вы еще вот о чем подумайте... Например, проверяем все числа от 0 до 999999999. Делится ли... ну, на 7. Получается только 0 и 7, так? Так стоит ли перебирать миллиард чисел, если проще умножить 100 миллионов на 2?

Так что, может, перепишете вашу программу?

Harry
  • 221,325
  • ,я так и сделал, но у меня почему то, при компиляции, после ввода данных ничего не происходит – Awesome Man Mar 05 '17 at 20:17
  • Ну я же намекнул - "Если вас интересует только"... – Harry Mar 05 '17 at 20:18
  • ,почему именно 100 млн? – Awesome Man Mar 05 '17 at 20:29
  • Потому что именно столько десятков в миллиарде :) – Harry Mar 05 '17 at 20:30
  • ааа,осенило,спасибо!) – Awesome Man Mar 05 '17 at 20:36
  • хотя, смотрите, перебирать надо, как тогда определить в диапазоне от [24 до 35) – Awesome Man Mar 05 '17 at 20:42
  • @Harry: Нужна ещё спецобработка для отрицательных чисел. – VladD Mar 05 '17 at 20:54
  • Ну правильно, нужно добраться до круглого десятка снизу, сверху, а дальше просто разность... Или добраться снизу до той же последней цифры, что и сверху... Или... – Harry Mar 06 '17 at 05:07
  • @VladD Поскольку нас интересует только нулевой результат - это неважно. Важнее то, что между отрицательными и положительными - если a и b с разным знаком - есть нуль, который надо учитывать особо. – Harry Mar 06 '17 at 05:10
  • Ну, я к тому, что n % 10 — не младшая цифра, а младшая цифра плюс знак как бы. – VladD Mar 06 '17 at 07:49
  • Ну и отрицательные числа наверное надо рассматривать отдельно. Нижняя граница +3 при поиске цифр, делящихся на 2, означает 3 вхождения в текущей десятке, а для отрицательного случая — только 2 вхождения. – VladD Mar 06 '17 at 07:52