Решение задачи Дежурство по классу с Codeforces

С пояснением   Просмотров: 22


Восьмиклассник Вова сегодня дежурит по классу. После уроков он зашёл в кабинет, чтобы вымыть доску, и обнаружил на ней число n. На вопрос о происхождении этого числа учительница математики Инна Петровна ответила Вове, что n является ответом на задание по арифметике для первоклассников. В учебнике было дано некоторое целое положительное число x. Задача состояла в том, чтобы сложить x с суммой цифр числа x, записанного в десятичной системе счисления.

Поскольку число n на доске было небольшим, Вова быстро догадался, какое число x могло быть в учебнике. Теперь ему хочется получить программу, которая будет для произвольных значений числа n искать все подходящие значения x или определять, что таких x не существует. Напишите для Вовы такую программу.

Код

#include <cstdio>
#include <vector>
using namespace std;
int main() {
	int n,i,sum,t;
	vector<int> ans;
	scanf("%d", &n);
	for (i = n - 100 > 1 ? n - 100 : 1; i <= n; i++) {
		sum = t = i;
		while (t) {
			sum += t % 10;
			t /= 10;
		}
		if (sum == n) ans.push_back(i);
	}
	printf("%d\n", (int)ans.size());
	for (int& a : ans) printf("%d ", a);
	return 0;
}

         

Администратор Photo Автор: Администратор


Для чисел, не превосходящих 109, сумма цифр не превосходит 100, поэтому можно просто перебрать сумму цифр x и проверить, что у n - x подходящая сумма цифр.


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться