Cyfry silni - SPOJ

0

Napisałem kod, sprawdziłem i wszystko działa lecz... ' Przekroczono limit czasu '. Co z tym kodem jest nie tak, że przekracza ten głupi limit ?

#include <iostream>
using namespace std;

int main()
{
	long long silnia, wynik;
	int pr;
	cin >> pr;
	while(pr)
	{
		wynik = 1;
	cin >> silnia;
	if(silnia <= 1)
		wynik = 1;
	else
	{
		for(int i = 2; i <= silnia; i++)
		{
			wynik *= i;
		}
	}
	cout << wynik / 10 << " " << wynik % 10;
	pr--;
	}
	return 0;
} 
0

Zasadniczo w tym że liczysz silnię. Pierwsza sprawa jest taka że int za dużo ci tej silni nie pomieści, raptem do kilkunastu... Druga sprawa jest taka ze liczenie silni skoro potrzebujesz tylko 2 ostatnie cyfry to terroryzm...
Proponuje wykorzystać mózg (i pomyśleć) a nie palce (i klepać). Podpowiedź: jeśli masz liczbę która ma zero na końcu to przez co byś jej nie mnożył, ostatnią cyfrą zawsze będzie 0...

0

Mam dobry humor i stare kody :)

#include <iostream>
using namespace std;
int main()
{
    int t;
    cin >> t;
    int* N = new int[t];
    for(int a = 0; a != t; a++)cin >> N[a];
    for(int b= 0 ; b != t; b++)
    {
        switch(N[b])
        {
        case 0:
        case 1:
            cout << 0 << ' ' << 1 << endl;
            break;
        case 2:
            cout << 0 << ' ' << 2 << endl;
            break;
        case 3:
            cout << 0 << ' ' << 6 << endl;
            break;
        case 4:
            cout << 2 << ' ' << 4 << endl;
            break;
        case 8:
        case 6:
        case 5:
            cout << 2 << ' ' << 0 << endl;
            break;
        case 7:
            cout << 4 << ' ' << 0 << endl;
            break;
        case 9:
            cout << 8 << ' ' << 0 << endl;
            break;
        default:
            cout << 0 << ' ' << 0 << endl;
        }
    }
    return 0;
}
0

@Macron, już większe to się nie dało, nie? Z cyklu rozwiązania 'alternatywne', w Common Lispie:

(loop repeat (read)
   do (format t "~[1~;1~;2~;6~;~;24~;20~;40~;20~;80~:;00~]~%" (read)))

...jak zwykle kolorowanie do d*.

1 użytkowników online, w tym zalogowanych: 0, gości: 1