Paseo a la velocidad de la tortuga
Descripción del Título
Encuentre el valor de a multiplicado por b módulo p, donde 1≤a, b, p≤10 ^ 18
Entrada y salida
Aporte
La primera fila a, la segunda fila by la tercera fila p.
Producción
Un número entero que representa el valor de a * b mod p.
En primer lugar, es solo una multiplicación de enteros de 64 bits y tomará el módulo, por lo que no es necesario escribir con alta precisión.
#include <bits/stdc++.h>
using namespace std;
unsigned long long a,ans,b,q;
int main()
{
cin>>a>>b>>q;
while(a)
{
ans+=((a%10)*b%q)%q;
ans%=q;
b=b*10%q;
a/=10;
}
cout<<ans;
return 0;
}
Esto parece ser un poco más rápido que el libro y se puede inferir mediante métodos matemáticos.