Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int inputK();
- int countSumNumbers(int);
- void printAllResultNumbers(int, int);
- int searchBorder(int);
- int main()
- {
- setlocale(LC_ALL, "Rus");
- int k, border;
- cout << "Программа выводит все натуральные числа, которые в k раз больше суммы своих цифр.\n";
- k = inputK();
- border = searchBorder(k);
- cout << "Искомые числа:\n";
- printAllResultNumbers(k, border);
- return 0;
- }
- int inputK()
- {
- int k;
- bool isNotCorrect;
- cout << "Введите k в диапазоне [1; 200 000]:\n";
- do {
- cin >> k;
- if (cin.fail() || cin.get() != '\n') {
- isNotCorrect = true;
- cout << "Ошибка ввода. Введите натуральное число в промежутке [1; 200 000]:" << '\n';
- cin.clear();
- while (cin.get() != '\n');
- }
- else if ((k < 1) || (k > 200000)) {
- cout << "Ошибка ввода. Введите натуральное число в промежутке [1; 200 000]:" << '\n';
- isNotCorrect = true;
- }
- else {
- isNotCorrect = false;
- }
- } while (isNotCorrect);
- return k;
- }
- int countSumNumbers(int number)
- {
- int sum;
- sum = 0;
- while (number) {
- sum = sum + number % 10;
- number = number / 10;
- }
- return sum;
- }
- void printAllResultNumbers(int k, int border)
- {
- for (int i = 1; i <= border; i++) {
- if (i == k * countSumNumbers(i)) {
- cout << i << '\n';
- }
- }
- }
- int searchBorder(int k)
- {
- int pot;
- pot = 1;
- for (int i = 1; i <= 10; i++) {
- if (pot > 9 * i * k) {
- return pot;
- }
- pot = pot * 10;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement