El primer capítulo de la multiplicación de enteros de 64 bits

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.

Supongo que te gusta

Origin blog.csdn.net/ydsrwex/article/details/112253076
Recomendado
Clasificación