#include <iostream>
#include <math.h>

using namespace std;

void F1(int * numbers, int len);
void F2(int * numbers, int len);
void F3(int * numbers, int len);
void F4(int * numbers, int len, int sign);

int main()
{
	long long int n;
	int len, sign = 1;
	cout << "Input N: ";
	cin >> n;

	if (n < 0) {
		sign *= -1;
		n = abs(n);
	}
	else ;
	
	if (n == 0)
		len = 1;
	else 
		len = log10(n) + 1; 
	int * numbers = new int[len];
	for (int i = 0; i < len; i++) {
		numbers[i] = n % 10;
		n /= 10;
	}

	F1(numbers, len);
	F2(numbers, len);
	F3(numbers, len);
	F4(numbers, len, sign);
	
	delete[] numbers;
	return 0;
}

void F1(int * numbers, int len) {
	int nOf2 = 0;
	long int p = 1;
	for (int i = 0; i < len; i++) {
		if (numbers[i] == 2)
			nOf2++;
		else ;
		if (numbers[i] != 0) 
			p *= numbers[i];
		else if (numbers[i] == 0 && len == 1)
			p = 0;
		else ;
	}
	cout << "Number of twos: " << nOf2 << endl << "Product of digits(exept zero): " << p << endl;
}

void F2(int * numbers, int len) {
	int nOf5 = 0, sOfEven = 0, f = -1;
	long int pOfOdd = 1;
	for (int i = 0; i < len; i++) {
		if (numbers[i] == 5)
			nOf5++;
		else ;
		if (numbers[i] % 2 == 1) {
			pOfOdd *= numbers[i];
			f++;
		}
		else sOfEven += numbers[i];
	}
	if (f == -1)
		pOfOdd = 0;
	else ;
	cout << "Are there three fives in the number? ";
	if (nOf5 >= 3) 
		cout << "Yes";
	else cout << "No";
	cout << endl << "Product of odd digits: " << pOfOdd << endl << "Sum of even digits: " << sOfEven << endl;
}

void F3(int * numbers, int len) {
	int max = 0, min = 9;
	for (int i = 0; i < len; i++) {
		if (numbers[i] > max)
			max = numbers[i];
		else ;
		if (numbers[i] < min)
			min = numbers[i];
		else ;
	}
	cout << "Minimum digit: " << min << endl << "Maximum digit: " << max << endl;
}

void F4(int * numbers, int len, int sign) {
	int f = -1;
	cout << "Number without 1 and 3: ";
	for (int i = len - 1; i >= 0; i--) {
		if (numbers[i] != 1 && numbers[i] != 3) {
			if (numbers[i] != 0) {
				if (f == -1)
					cout << sign * numbers[i];
				else cout << numbers[i];
				f++;
			}
			else if (f != -1)
				cout << numbers[i];
			else ;
		}
		else ;
	}
	if (f == -1) 
		cout << "0";
	cout << endl;
}
