Tutaj zamieszczam kod:
#include <iostream>
#include <cstdio>
#include <math.h>
#include <windows.h>
#include <time.h>
using namespace std;
clock_t start,stop;
double czas;
int sil(int wartosc)
{
if (wartosc==0)
{
return 1;
}
else
{
return wartosc*sil(wartosc-1);
}
}
int main()
{
int D;
cin>>D;
int p;
int k;
if ((D>=1) && (D<=30))
{
for (int i=0;i<D;i++)
{
double n;
start=clock();
cin>>n;
if ((n>=0) && (n<=1000000000))
{
p=floor(sil(n))/10;
k=sil(n)-(p*10);
cout<<p<<" "<<k<<endl;
}
else
{
cin>>n;
}
stop=clock();
czas=(double)(stop-start)/CLOCKS_PER_SEC;
cout<<czas;
}
}
else
{
cin>>D;
}
return 0;
}
Gdy badam ten czas to srednia dla malych liczb to ok. 0,3s. Dlaczego tak dlugo jak na taki proces?
Zas gdy licze tak :
#include <iostream>
#include <cstdio>
#include <math.h>
#include <windows.h>
#include <time.h>
using namespace std;
clock_t start,stop;
double czas;
int sil(int wartosc)
{
if (wartosc==0)
{
return 1;
}
else
{
return wartosc*sil(wartosc-1);
}
}
int main()
{
int D;
cin>>D;
int p;
int k;
if ((D>=1) && (D<=30))
{
for (int i=0;i<D;i++)
{
double n;
cin>>n;
if ((n>=0) && (n<=1000000000))
{
start=clock();
p=floor(sil(n))/10;
k=sil(n)-(p*10);
cout<<p<<" "<<k<<endl;
stop=clock();
czas=(double)(stop-start)/CLOCKS_PER_SEC;
cout<<czas;
}
else
{
cin>>n;
}
}
}
else
{
cin>>D;
}
return 0;
}
To srednia dlugosc wykonania nawet dla ogromnych liczb to 0,001s.
Ktos moze mi to wytlumaczyc, bo jestem zielony w te klocki ^^
Poprzednie zadania tez wykonywaly sie dlugo, ale miescily sie w czasie.
Jaki blad popelniam?