2011-05-06 22 views

Respuesta

5

Puedes lanzar a y c-long long, por lo la multiplicación no se desbordará

((long long)a * (long long)b) % c 
+0

tardará mucho tiempo – Kunal

+0

necesito algo de método optimizado – Kunal

+2

No creo que encuentre una solución más rápida. En las máquinas x86, el resultado de la multiplicación de 32 bits siempre es de 64 bits. De esta forma, simplemente notifica al compilador que use el resultado de 64 bits. – buc

15
(a * b) % c == ((a % c) * (b % c)) % c 
+0

+1 Acabo de comenté esto, pero la falta de café significaba que no estaba seguro. ;) – Bart

+1

Si a <= b Westy92

7

¿Qué hay de ((a % c) * (b % c)) % c? Dependiendo de su arquitectura, esto podría ser más rápido o más lento que lanzar a un tipo más grande.

+0

Si a <= b Westy92

Cuestiones relacionadas