Sa se determine ultima cifra diferita de 0 a lui n!.
Rez
Ideea de a inmulti toate numerele nu este viabila datorita faptului ca n! creste foarte repede. Chiar daca am implementa operatii cu numere foarte mari, pentru n relativ mic (300) timpul de calcul este si el crescut.
O alta metoda, ar fi sa pastram tot timpul ultima cifra pe care sa o inmultim cu numarul urmator, si tot asa. Dar ce facem cu cifrele de 0 care apar inevitabil la sfirsit? Cine ne incurca pe noi?
Cifrele 0 de la sfirsitul lui n! sunt date de numerele 2 si 5 care se gasesc printre divizorii numerelor care formeaza produsul. Deci ceea ce trebuie sa facem este sa scapam de perechile de divizori (2,5). Pentru aceasta vom pastra toate numerele intr-un tablou, de la 1 la n. Vom parcurge tabloul cautind multipli de 5 si multipli de 2. Pentru fiecare astfel doua numere gasite le vom imparti la 2 respectiv 5 si vom relua procedeul. La sfirsit vom face produsul tuturor numerelor ramase in sir, pastrind numai ultima cifra.
Sa consideram un examen la istorie, unde trebuie ca studentii sa puna in ordinea cronologica citeva evenimente istorice. Studentii care ordoneaza toate evenimentele corect vor primi nota maxima.
Cei care vor raspunde partial or primi nota dupa urmatoarea metoda : vor primi cite 1 punct pentru fiecare eveniment din cea mai mare (nu neaparat contigua) secventa de evenimente care sunt corect ordonate relativ la celalat.
De exemplu, daca patru eveniment sunt corect ordonate astfel 1 2 3 4 atunci secventa 1 3 2 4 va primi nota 3 (ambele secvente 1 2 4 si 1 3 4 sunt corect ordonate relativ la fiecare membru al secventei).
In aceasta problema, se cere un program care sa corecteze raspunsurile studentilor. Se da ordinea corect cronologic a n evenimente si raspunsul unui student. La iesire trebuie sa se dea nota corecta.
Rez
Sortarea ocupa un loc important intre algoritmi. Se cunosc o serie de algoritmi de sortare de la Bubble sort pina la algoritmi paraleli de sortare. In aceasta problema, avem nevoie de un program care creeaza un program de sortare.
Programul creat trebuie sa citeasca si sa afiseze in ordine n numere citite de la tastatura. Programul este scris in Pascal. ProgramulPascal generat trebuie sa aiba urnmatoarele proprietati:
Se citeste de la tastatura un intreg n<=6>.
Exemplu :
3
program sort(input,output);
var
a,b,c : integer;
begin
readln(a,b,c);
if a < b then
if b < c then
writeln(a,b,c)
else if a < c then
writeln(a,c,b)
else
writeln(c,a,b)
else
if a < c then
writeln(b,a,c)
else if b < c then
writeln(b,c,a)
else
writeln(c,b,a)
end.
Rez