Thursday, July 9, 2015

UVa 10323 - Factorial! You Must be Kidding!!!

// UVa 10323 - Factorial! You Must be Kidding!!!

#include <iostream>
using namespace std;

#define datatype signed long long int
#define Max 6227020800
#define Min 10000

int main() {
	datatype f[101];
	f[0] = 1;
	datatype n = 0;
	while (f[n] <= Max) {
		n++;
		f[n] = n * f[n - 1];
	}

	datatype i;
	while (cin >> i) {
		if (i < 0) {
			bool even = (i % 2 == 0);
			cout << (even ? "Underflow!" : "Overflow!") << endl;
		} else if (i >= n)
			cout << "Overflow!" << endl;
		else if (f[i] < Min)
			cout << "Underflow!" << endl;
		else
			cout << f[i] << endl;
	}
	return 0;
}

No comments:

Post a Comment