Created
July 29, 2019 10:00
-
-
Save kupp1/0dce2211666608a2a9b8844f9cb3c3db to your computer and use it in GitHub Desktop.
Capacity & multiplicity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <inttypes.h> | |
int main(int argc, char *argv[]) | |
{ | |
uint_fast16_t N, count = 0; | |
scanf("%" SCNuFAST16, &N); | |
uint_fast16_t cur_cap = 1, following = 10; | |
/* cur_cap - текущая разрядность числа | |
following - первое число большей разрядности */ | |
uint_fast16_t cur_last_evenly_divided = 1; | |
/* cur_last_evenly_divided - последнее число текущей разрядности, | |
которое делится нацело на свою разрядность */ | |
while (count < N) | |
{ | |
if (cur_last_evenly_divided < following) | |
/* предполагается, что cur_last_evenly_divided делится на свою разрядность, | |
по-этому выводим его, и прибавляем разрядность, и так пока оно за свой | |
разряд не выйдет */ | |
{ | |
printf("%" SCNuFAST16 "\n", cur_last_evenly_divided); | |
cur_last_evenly_divided += cur_cap; | |
count++; | |
} | |
else // если мы перешли на следующую разрядность | |
{ | |
cur_cap++; // увеличиваем текущюю разрядность | |
uint_fast16_t rem = following % cur_cap; | |
/* Так как мы не изменяли following, то на данный момент | |
following - этому первое число текущей разрядности. | |
Находим остаток от деления following на свою разрядность*/ | |
cur_last_evenly_divided = following - rem + (rem > 0 ? cur_cap : 0); | |
/* Если первое число делится, то присваеваем это значение | |
cur_last_evenly_divided, если нет, то находим первое число текущей | |
разрядности, которое бы делилось*/ | |
following *= 10; | |
} | |
} | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Задание "Ряд и кратность" | |
Написать программный код, который перебирает целые числа от 0 до бесконечности и выводит на экран те, которые делятся без остатка на количество разрядов (знаков) этого числа (т.е. те двухзначные, которые делятся на 2, трехзначные на три и т.д.). Выполнение обработки должно остановиться в тот момент, когда всего будет выведено N (задается пользователем) таких чисел. | |
Результат нужно предоставить в виде: | |
1) исходный код | |
2) результат выполнения кода для N = 28, 120, 500 | |
Задание должно быть выполнено на c++ и наиболее просто, оптимально |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment