#include <iostream>
using namespace std;

int main() {
	int exercise;
	do {
		cout << "Enter exercise number (1-3): ";
		scanf_s("%d", &exercise);
	} while (exercise < 0 || exercise > 3);

	cout << endl;

	switch (exercise) {
		case 1:
			/*
				Задание 1.
				Составить диалоговую программу с пользователем,
				имитирующую искусственный интеллект (тему диалога
				придумать самостоятельно). Программа должна задавать
				вопросы и реагировать в зависимости от ответов на них.
				Программа должна содержать не менее пяти вопросов.
			*/
			int a1, a2, a3, a4, a5;

			// Привет! Сколько тебе лет?
			cout << "Hello! How old are you?";
			cout << endl << "Answer: ";
			scanf_s("%d", &a1);

			cout << endl;

			// a <= 0 - Хорошо. Храни в секрете...
			// 0 < a < 14 - Сколько конфет в день ты ешь?
			// 14 <= a - Сколько раз в день ты ешь?
			if (a1 <= 0) cout << "OK. Keep it secret..." << endl;
			if (a1 > 0 && a1 < 14) cout << "How many sweets do you eat every day?";
			else cout << "How many times a day do you eat?";
			cout << endl << "Answer: ";
			scanf_s("%d", &a2);

			// a <= 0 - Секрет? Замечательно!
			// a > 3 - Так много, ты же лопнешь!
			// 0 <= a < 2 - Так мало...
			// 2 <= a <= 3 - Замечательно!
			if (a2 <= 0) cout << "A secret? ";
			if (a2 > 3) cout << "So many, so you can burst!";
			else if (a2 >= 0 && a2 < 2) cout << "So few... ";
			else cout << "Wonderful! ";

			// Сколько раз в день ты упражняешься?
			cout << endl << endl << "How many times a day do you exercise?";
			cout << endl << "Answer: ";
			scanf_s("%d", &a3);

			// a = 0 - Это плохо!
			// a < 0 - Ты - Бог Лени!
			// a > 2 - Да ты, кажется, спортсмен!
			// 1 <= a <= 2 - Неплохо! Но мог бы больше.
			if (a3 == 0) cout << "That's poor!";
			else if (a3 < 0) cout << "You're God of Sloth!";
			else if (a3 > 2) cout << "You seem to be an athlete!";
			else cout << "Good! But could do more.";

			// Какое твоё любимое число?
			cout << endl << endl << "What's your favorite digit?";
			cout << endl << "Answer: ";
			scanf_s("%d", &a4);

			// a = 13 или 6 или 66 или 666 - О-оу... Мне оно не нравится...
			// a = 0 - Круг - не число, но тоже пойдёт
			// a < 0 - Оно такое отрицательное/негативное...
			if (a4 == 13 || a4 == 6 || a4 == 66 || a4 == 666) cout << "Uh-oh... I don't like it...";
			else if (a4 == 0) cout << "Circle is not a digit, but also suitable.";
			else if (a4 < 0) cout << "It's so negative...";
			else cout << "I'll remember!";

			// И последний вопрос: Какой сейчас месяц?
			cout << endl << endl << "And the last question: What month is it now?";
			cout << endl << "Answer: ";
			scanf_s("%d", &a5);
				
			// a > 12 или a < 1 - Я не знаю такого месяца...
			// a = 1 или 2 или 12 - На улице холодно - одевайся теплей!
			// 3 <= a <= 5 - Какое прекрасное время года...
			// 6 <= a <= 8 - На улице жарко, будь осторожней!
			// 9 <= a <= 11 - не забудь надеть резиновые сапоги!
			if (a5 > 12 || a5 < 1) cout << "I don't know that month...";
			else if (a5 == 1 || a5 == 2 || a5 == 12) cout << "It's cold outside - dress warmly!";
			else if (a5 >= 3 && a5 <= 5) cout << "What a great time of the year...";
			else if (a5 >= 6 && a5 <= 8) cout << "It's hot outside, be careful!";
			else if (a5 >= 9 && a5 <= 11) cout << "Remember to put on your rubber boots!";

			// Пока!
			cout << endl << "Bye!";
			break;

		case 2:
			/*
				Задание 2.
				Пользователь вводит любое натуральное число N.
				Вывести на экран числа в формате (в примере N=5):
				12345
				51234
				45123
				34512
				23451
			*/
			int NN;
			do {
				cout << "N: ";
				scanf_s("%d", &NN);
			} while (NN <= 0);

			for (int i = 0; i < NN; i++) {
				for (int j = 0; j < NN; j++) {
					cout << ((NN+j-i) % NN) + 1;
				}
				cout << endl;
			}
			break;

		case 3:
			/*
				Задание 3.
				Найти все натуральные числа из отрезка [M, N], обладающие
				следующим свойством: Количество делителей суммы цифр
				числа четное.
			*/
			int M, N;
			do {
				cout << "M: ";
				scanf_s("%d", &M);
			} while (M <= 0);
			do {
				cout << "N: ";
				scanf_s("%d", &N);
			} while (N <= 0);

			cout << "Answers: ";
			for (int i = M; i <= N; i++) {
				int tmp, cnt = 0, sum = 0;

				// Находим сумму цифр
				tmp = i;
				while (tmp > 0) {
					sum += tmp % 10;
					tmp /= 10;
				}

				// Находим все делители - от 1 до sum
				// и увеличиваем счётчик, когда нашли
				for (int j = 1; j <= sum; j++)
					if (sum % j == 0) cnt++;

				// Выводим число, если делители есть и
				// их количество чётное
				if (((cnt % 2) == 0) && (cnt != 0)) cout << i << "  ";
			}
			cout << endl;
			break;
	}
	return 0;
}