Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] wywłaszczenie programu z silnią i źle wczytane dane

Ostatnio zmodyfikowano 2016-01-07 18:47
Autor Wiadomość
Eryk17
Temat założony przez niniejszego użytkownika
[c++] wywłaszczenie programu z silnią i źle wczytane dane
» 2016-01-06 20:59:01
hej. mam program na maina ktory ma obliczyć silnie danej liczby, następnie podzielić ją sposobem modulo przez 1mld i ma wypisać resztę. U mnie kompiluje i działa poprawnie, ale na stronie maina zdarzyło się że wywłaszczyło mi program oraz wczytuje złe dane. Czym to może być spowodowane?

C/C++
#include <iostream>


using namespace std;

int main()
{
    unsigned int s;
    unsigned int silnia = 1;
    cin >> s;
    for( int i = 1; i <= s; i++ )
    {
        silnia *= i;
    };
    int wynik = silnia % 1000000000;
    cout << wynik;
   
}
P-143020
carlosmay
» 2016-01-06 21:12:38
Dla s > 13 kończy się zakres zmiennej typu unsigned int .
P-143022
Eryk17
Temat założony przez niniejszego użytkownika
» 2016-01-07 16:45:15
zmieniłem z unsigned int na samo int i nadal ten sam problem. Albo wywłaszczenie albo wiersz 1: wczytano '932053504', a oczekiwano '227020800'
ktoś wie dlaczego?
 
P-143071
carlosmay
» 2016-01-07 17:05:58
Albo wywłaszczenie albo wiersz 1: wczytano '932053504', a oczekiwano '227020800' ktoś wie dlaczego?
Poprzedni post => niewłaściwy typ zmiennej.
Wyjście poza jej zakres ( wartość maksymalną).
P-143073
mateczek
» 2016-01-07 17:28:04
źle liczysz silnie !!! Gdyby Autor zadania chciał żebyś policzył silnie to pewnie nie prosił by o wynik modulo !!!! (modulo to klucz do zagadki !!!)
Dane są tak dobrane że nie policzysz silni za żadne skarby prawdopodobnie nawet long long się wykrzaczy!!!
P-143075
Eryk17
Temat założony przez niniejszego użytkownika
» 2016-01-07 17:36:27
w takim razie co zrobić by ten program działał? bo probowałem long int i nadal nic.
P-143076
mateczek
» 2016-01-07 18:47:18
Moja podpowiedź do zagadki !!!

podaj wynik modulo - 10:

5!
6!
7!
8!
9!
452435! :P musisz liczyć ?? :P czy już znasz ??

//edit: długo schodzi więc zasugeruje rozwiązanie !!!

C/C++
#include <iostream>


using namespace std;

int main()
{
    long long s;
    long long silnia = 1;
    cin >> s;
    for( int i = 1; i <= s; i++ )
    {
        silnia *= i;
        silnia = silnia % 1000000000
        if( silnia == 0 ) break;
       
    };
   
    cout << silnia << endl;
   
}
P-143085
« 1 »
  Strona 1 z 1