3 / 3
Apr 2018

Witam, mam problem z wyżej wymienionym zadaniem.
Otóż sędzia mówi mi że przekroczono czas kompilacji (program ma docelowo nie przekraczać 1 sekundy.)
wrzuciłem funkcje clock_t żeby to sprawdzic i problem w tym że jak się to szybko zrobi to nie przekracza sekundy…
Kod jest dość prosto napisany, zaznaczam że jestem poczatkującym programistą.
prosze o pomoc, oto mój kod;

#include
#include
#include
#include
#include <time.h>

using namespace std;

int n,m=1;
clock_t start, stop;
double czas;
long long silnia(int n)
{
if (n<=1) cout<<“0 1”<<endl;
else
{
for (int i=1; i<=n; i++)
{
m=m*i;
}
string napis;
stringstream ss;
ss << m;
ss >> napis;
int dlugosc=napis.length();
cout<<napis[dlugosc-2]<<" "<<napis[dlugosc-1]<<endl;
m=1;

}

}

int main()
{
int D,x=0;
cin>>D;
start=clock();
while (x<D)
{
cin>>n;
silnia(n);
x++;
}
stop=clock();
czas=(double)(stop - start)/CLOCKS_PER_SEC;
cout<<czas<<endl;

system ("pause");
return 0;

}

  • created

    Apr '18
  • last reply

    Apr '18
  • 2

    replies

  • 750

    views

  • 3

    users

  • 1

    like

  • 1

    link

Problem jest w tym, że w tym zadaniu nie musisz wcale wyliczać silni. Wystarczy zauważyć, że dla liczb większych lub równych 10 dwie ostatnie cyfry to 0 0.:grinning: