Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 037 ClassicTask  (Citit de 4555 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
dushmi
Nu mai tace
*****

Karma: 130
Deconectat Deconectat

Mesaje: 472



Vezi Profilul
« : Noiembrie 16, 2012, 10:26:06 »

Aici puteţi discuta despre problema ClassicTask.
Memorat
albucristian64
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #1 : Noiembrie 25, 2012, 09:56:13 »

Va rog explicati-mi ce gresesc si de ce imi merg doar primele 5 teste.

#include <stdio.h>
long long int N, P, M;
long long int res   = 1;
long long int n     = 0;

int main(void)
{
    freopen("classictask.in", "r", stdin) ;
    freopen("classictask.out", "w", stdout)   ;
    scanf("%lld %lld %lld", &N, &P, &M);
    n = N;
    while (P != 0)
    {
        if ((P & 1) != 0)   // numarul este impar ?
            res = (res * n) % M;
        n = (n * n) % M;
        P >>= 1;
    }
    printf("%lld\n", res);
    return 0;
}
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #2 : Noiembrie 25, 2012, 12:48:51 »

Overflow. Chiar aici era dificultatea problemei. Da-i cel mai mare C posibil si o sa vezi ca iti va da numere negative cateodata.
Memorat
Johny_Depp22
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #3 : Iunie 25, 2013, 13:08:38 »

am si eu aceeasi problema, adica iau ok doar pe primele 5 teste. Cum as putea scapa de overflow?
Memorat
romircea2010
Strain
*

Karma: 18
Deconectat Deconectat

Mesaje: 35



Vezi Profilul
« Răspunde #4 : Iunie 25, 2013, 14:24:26 »

Folosesti numere mari.  Smile
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #5 : Iunie 25, 2013, 16:25:38 »

Ideea era sa nu faci asta Smile. Se poate mult mai scurt.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines