Titlul: 037 ClassicTask Scris de: Mihai-Alexandru Dusmanu din Noiembrie 16, 2012, 10:26:06 Aici puteţi discuta despre problema ClassicTask (http://infoarena.ro/problema/classictask).
Titlul: Răspuns: 037 ClassicTask Scris de: Albu Dumitru Cristian din 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; } Titlul: Răspuns: 037 ClassicTask Scris de: George Marcus din 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.
Titlul: Răspuns: 037 ClassicTask Scris de: Johnny Depp din 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?
Titlul: Răspuns: 037 ClassicTask Scris de: FMI Trifan Mircea Mihai din Iunie 25, 2013, 14:24:26 Folosesti numere mari. :)
Titlul: Răspuns: 037 ClassicTask Scris de: Mihai Calancea din Iunie 25, 2013, 16:25:38 Ideea era sa nu faci asta :). Se poate mult mai scurt.
|