Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 4
1

Натуральные числа у которых сумма цифр делится на K

19.03.2015, 08:30. Показов 974. Ответов 3
Метки нет (Все метки)

2. Найдите количество R-разрядных натуральных чисел, сумма цифр которых делится на K.
Примечание: в этой задаче считаем, что 0 к натуральным числам не относится (хотя вообще это спорный вопрос)
Исходные данные
Вводятся два числа R и K (R от 1 до 9, K от 1 до 100).
Результат
Выведите искомое количество
Пример
Исходные данные Результат
Пример 1. Вход: 2 3
Пример 1. Выход: 30
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2015, 08:30
Ответы с готовыми решениями:

Найти все 4-х значные натуральные числа, у которых сумма крайних цифр равна сумме средних, а само число делится на A
Найти все четырехзначные натуральные числа, у которых сумма крайних цифр равна сумме средних цифр,...

Числа, сумма цифр которых делится на K
Вводятся два числа N и K. Выведите количество чисел из диапазона от 1 до N включительно таких, что...

Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27
найти все четырёхзначные числа , у которых сумма крайних цифр равна сумме средних цифр , а само...

Нужно найти все числа в диапазоне, сумма цифр которых делится на k
Всем добрый день. Нужно найти все числа в диапазоне, сумма цифр которых делится на k. Не могу...

3
383 / 277 / 478
Регистрация: 09.05.2014
Сообщений: 769
20.03.2015, 12:33 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
int fNumSum(int n){
    int sum = 0;
    do{
        sum += n % 10;
        n /= 10;
    } while (n > 0);
    return sum;
}
int main(){
    int r, k, num, q = 0;
    std::cin >> r >> k;
    for (num = pow (10, (r - 1)); num < pow (10, r); num++)
        if (fNumSum(num) % k == 0)
            q++;
    std::cout << q;
}
1
4638 / 2148 / 270
Регистрация: 01.03.2013
Сообщений: 5,719
Записей в блоге: 22
21.03.2015, 02:04 3
Интересная задачка Выше представленный кот при R=9 уже призадумывается надолго Пришлось делать своего специального боевого генно-модифицированного бездонно-рекурсивно-мемоизационного, который считает влет любые мыслимые R и S, а если вооружить его длинной арифметикой - то и немыслимые:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
typedef unsigned long long int ull;
const int rmax = 100; ull dp [rmax] [rmax*9]; ull f(int, ull, int);
 
ull loop(int i, int r, ull s, ull a) { return (i<10) ? loop(i+1, r, s, a+f(r, s-i, 0)) : a;}
 
ull f(int r, ull s, int i0) {
    if (s==0)                               return 1;
    else if (s<0 || s>r*9 || r==0)          return 0;
    else if (dp[r][s])                      return dp[r][s];
    else { dp[r][s] = loop(i0, r-1, s, 0);  return dp[r][s]; }
}
ull res(int r, ull s, ull k, ull a) {ull d=f(r, s, 1); return (d) ? res(r, s+k, k, a+d) : a;}
 
int _tmain(int argc, _TCHAR* argv[]) {
    int r; ull k; cout << "Input r [<" << rmax << "], k [>0]: "; cin >> r >> k;
    cout << res(r, k, k, 0) << endl;
    system("pause"); return 0;
}
По доброй традиции - без единого цикла, правда с растяжкой на ссылочную переменную (у меня для краткости - глобальная, хотя можно и статическую или в мэйне нарезать и ссылку передавать - не принципиально). Прошу пробовать и делиться впечатлениями

Не по теме:

UPD все-таки решил обратиться за длинной арифметикой (понятно куда :) ), заодно применил и очередной раз проверил позавчера написанный наколенный монадный мемоизатор - получилось очень неплохо:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
evaluateFunction :: Ord a => (a -> Either b ([a], [b] -> b)) -> a -> b
evaluateFunction f n = runST $ do
    ref <- newSTRef Map.empty
 
    let memoDP ref i = do
            mref <- readSTRef ref
            case Map.lookup i mref of
                Just v  -> return v
                Nothing -> do
                    r    <- coreDP (memoDP ref) i
                    mref <- readSTRef ref
                    writeSTRef ref $ Map.insert i r mref
                    return r
 
        coreDP g i = case f i of
            Left  v      -> return v
            Right (l, t) -> do
                r <- mapM g l
                return $ t r
 
    r <- memoDP ref n
    return r
 
core (r, s, i0) | s==0                 = Left 1
                | s<0 || s>r*9 || r==0 = Left 0
                | otherwise            = Right (l, sum)
                where l = zip3 (repeat $ r-1) (map (s-) [i0..9]) (repeat 0)
 
res :: Integer -> Integer -> Integer
res r k = go r k k 0 where
    go r s k a | d==0      = a
               | otherwise = go r (s+k) k (a+d)
               where d = f r s 1
                     f r s i0 = evaluateFunction core (r, s, i0)
 
main = print $ res 210 1137
199704895018197513774162329639806112769763115080354789960779 2907849431
150952108019165330909913076516664078629244995346238309114817 1100805743
858577884141673700025560895751568633662034044980450554852989 2100

2
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 4
21.03.2015, 19:15  [ТС] 4
Спасибо огромное!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2015, 19:15

Найти все двузначные числа сумма квадратов цифр которых делится на 13
Найти все двузначные числа, сумма квадратов цифр которых делится на 13.

Найти все двузначные числа, сумма квадратов цифр которых делится на 17
Найти все двузначные числа, сумма квадратов цифр которых делится на 17.

На отрезке [2, n] найти все натуральные числа, сумма цифр которых при умножении числа на а не изменится
Помогите,вот задание. На отрезке найти все натуральные числа, сумма цифр которых при умножении...

Вывести числа, сумма десятичных цифр которых равна n и само число делится на m
2)Из чисел от 10 до 99 вывести те, сумма цифр которых равна n и само число делится на m.

Получить все трехзначные натуральные числа, сумма цифр которых равна m
var m, n, s, i: integer; begin write('Введите m (m&lt;27): '); readln(m); for i:= 100 to 999 do...

Найти трехзначные натуральные числа, сумма цифр которых равна их произведению
найти все трехзначные натуральные числа, сумма цифр которых равна их произведению. с кодом если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.