Cześć! Mam do napisania program w języku c++ (używam CodeBlocks) takiej treści: Dana jest liczba m, obliczyć resztę z dzielenia liczby
\(\displaystyle{ x = 1! + 2! + 3! + 4! + 5! + ... + 999999999! + 1000000000!}\) przez m.
Na wejściu należy podać liczbę całkowitą dodatnią
\(\displaystyle{ m (m \le 1000)}\). A na wyjściu oczekuję reszty z dzielenia liczby x przez liczbę m.
Oto napisany przeze mnie program:
Kod: Zaznacz cały
#include<iostream>
using namespace std;
int silnia(int p)
{
if(p==1)
return 1;
else
{
return p*silnia(p-1);
}
}
int main()
{
int l=0;
int m;
int wynik;
cin>>m;
for(int i=1;i<m;i++)
{
l=l+silnia(i);
}
wynik=l%m;
if(wynik<0)
{
wynik+=m;
}
cout<<wynik;
return 0;
}
Niby powinien działać poprawnie, ale po wysłaniu go na sprawdzarkę themis, otrzymuję komunikat "wrong answer" i nie wiem gdzie jest błąd. Może mógłby mi ktoś poprawić ten program, aby działał jak powinien.
Ostatnio zmieniony 27 paź 2011, o 23:05 przez
Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.