darius
27.11.2015, 20:42
Pozdrav. Imam problema prilikom pisanja sledeceg programa. Program treba da za zadati broj n prikaze poslednje dve cifre faktorijala tog broja (dakle n!) kada se odbiju sve nule broja. Ukoliko faktorijal broja nema nule onda se prikazu poslednje dve cifre. Broj n je u opsegu od 1 do 10000. Ovako sam ja to pokusao da odradim:
#include <stdio.h>
#define MAX 10000
int fakt(int);
int main()
{
int n,x,y;
printf("\nBroj za koji zelite da se odredi faktorijal je ");
scanf("%d",&n);
y=fakt(n);
printf("\nFaktorijal iznosi %d\n\n",y);
if(y>10){
do{
y=y/10.;
}while(y%10==0);
}
x=y%100;
printf("\nZadnje dve cifre su %d\n",x);
return 0;
}
int fakt(int n)
{
if(n>1)
return n*fakt(n-1);
else
return 1;
}
Prilikom rada ovog programa uspevam da dobijem tacne vrednosti do faktorijala broja 12, vec za faktorijal 13 dobijam potpuno drugu vrednost a za faktorijal 17 je rezultat negativan. Da li postoji neki nacin koji bi omogucio da se ne racuna faktorijal do kraja (10000! je prilicno veliki broj) vec da se na neki nacin sam racun olaksa ? Ukoliko je n=7 tj. traze se poslednje dve cifre za faktorijal 7 sto je 5040, uspeva da ispise samo 4 a nulu ne uspeva da ispise. Primetio sam da se broj nula faktorijala povecava za 5 tako da od 0! do 4! nema nula, od 5! do 9! ima jedna nula, 10! do 14! ima dve nule itd.
Bilo koja pomoc i usmerenje su pozeljni.
#include <stdio.h>
#define MAX 10000
int fakt(int);
int main()
{
int n,x,y;
printf("\nBroj za koji zelite da se odredi faktorijal je ");
scanf("%d",&n);
y=fakt(n);
printf("\nFaktorijal iznosi %d\n\n",y);
if(y>10){
do{
y=y/10.;
}while(y%10==0);
}
x=y%100;
printf("\nZadnje dve cifre su %d\n",x);
return 0;
}
int fakt(int n)
{
if(n>1)
return n*fakt(n-1);
else
return 1;
}
Prilikom rada ovog programa uspevam da dobijem tacne vrednosti do faktorijala broja 12, vec za faktorijal 13 dobijam potpuno drugu vrednost a za faktorijal 17 je rezultat negativan. Da li postoji neki nacin koji bi omogucio da se ne racuna faktorijal do kraja (10000! je prilicno veliki broj) vec da se na neki nacin sam racun olaksa ? Ukoliko je n=7 tj. traze se poslednje dve cifre za faktorijal 7 sto je 5040, uspeva da ispise samo 4 a nulu ne uspeva da ispise. Primetio sam da se broj nula faktorijala povecava za 5 tako da od 0! do 4! nema nula, od 5! do 9! ima jedna nula, 10! do 14! ima dve nule itd.
Bilo koja pomoc i usmerenje su pozeljni.