Maqsat
@Maqsat
либерал в программировании

Как решить проблему на С++?

Напишите программу, которая определит и выведет на экран один сомножитель из N, который можно вычеркнуть из произведения
1! x 2! x 3! x ... x N! так, чтобы оставшееся произведение было точным квадратом.
P.S понятно что
1! x 2! x 3! x 4! = 122
если убрать 2! то все верно но если N нечетное например 5,7,9 то тогда что делать?
  • Вопрос задан
  • 476 просмотров
Решения вопроса 1
Maqsat
@Maqsat Автор вопроса
либерал в программировании
#include<iostream>
using namespace std;

double faktorial(int n)
{
	if (n == 0) return 1;
	return n*faktorial(n - 1);
}
double isSquare(float n)
{
	double k;
	if (n == 0) return  0;
	k = sqrt(n);
	if (k == (int)k) return 1;
	else return 0;
}

int main()
{
	int n,temp;
	double f, s = 1;
	bool flug = true;
	cin >> n;

	for (size_t i = 1; i <= n; i++)
	{
		s *= faktorial(i);
	}
	cout << isSquare(s) << endl;

	for (size_t i = 0; i < n; i++)
	{
		temp = n - i;
		f = s / temp;
		if (isSquare(f))
		{
			cout << temp << endl;
			flug = false;
			break;
		}
	}
	if (flug) cout << "Not found "<<endl;
	system("pause");
	return 0;

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Mrrl
@Mrrl
Заводчик кардиганов
А откуда взялась задача? Есть ли ссылка на оригинал? Есть ли там примеры?
Пока впечатление, что авторы хотели чего-то другого.
Ответ написан
@vilgeforce
Раздолбай и программист
В данном случае "помогите" - решить за вас? Нет уж, спасибо, не надо...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы