#include <math.h>
#include <iostream>
using namespace std;

int main() {
	/*
		Задание 1 (цикл for).
		Определите количество трехзначных натуральных чисел,
		произведение цифр которых равно введенному с клавиатуры
		числу N. Выведите эти числа. Использовать цикл for.
	*/
	int N, cnt = 0;

	cout << "N: ";
	scanf_s("%d", &N);
	for (int i = 100; i < 1000; i++) {
		int mult = (i % 10) * (i / 10 % 10) * (i / 100 % 10);
		if (mult == N) cnt++;
	}
	cout << "Result: " << cnt << endl;
	cout << endl;


	/*
		Задание 1 (цикл while).
		Определите количество трехзначных натуральных чисел,
		произведение цифр которых равно введенному с клавиатуры
		числу N. Выведите эти числа. Использовать цикл while.
	*/
	N = 0, cnt = 0;

	cout << "N: ";
	scanf_s("%d", &N);

	int i = 100;
	while (i < 1000) {
		int mult = (i % 10) * (i / 10 % 10) * (i / 100 % 10);
		if (mult == N) cnt++;

		i++;
	}
	cout << "Result: " << cnt << endl;
	cout << endl;


	/*
		Задание 2.
		Вычислите значение выражения. Значение х вводится
		с клавиатуры.
	*/
	int k;
	double x, Z = 1;

	// Переменная k должна быть больше n либо ей равна,
	// иначе выполнение операции произведения невозможно
	do {
		cout << "k: ";
		scanf_s("%d", &k);
	} while (k < 2);

	cout << "x: ";
	scanf_s("%lf", &x);

	for (int n = 2; n <= k; n++)
		Z *= ((2 * n + 1) * pow(x, n + 2)) / pow(2 * n - 1, 2);

	cout << "Z = " << Z;

	return 0;
}