Prison Break (principio de inclusión-exclusión + potencia Fast)

Prisión continua el número 1 ... n de n habitaciones, cada habitación del detenido, hay religiones M, cada religión puede ser uno de los prisioneros. Si los mismos prisioneros religiosos en la habitación contigua, le puede pasar a escapar, el número de estados que buscan escapar posible

Formato de entrada: entrada dos enteros M, n.1 <= M <= 108,1 <= N <= 1012

Formato de salida: número posible estado escape, analógico 100003 modulo
rangos de datos y provocó  
seis estados (000) en el extremo (001) (011) (100) (110) (111) cuando la salida de cada fila del espacio extra, no afecta la corrección respuesta

Ejemplo de entrada
23
Salida de muestra
6

1. El cálculo directo de todos los programas no es conveniente para escapar, se calcula teniendo en cuenta el número total de programas usando el programa y no escapan a la inclusión y la exclusión, puede restar;
2. Programa total del número m ^ n, ya que hay n habitaciones, cada una hay m selección;
número 3. programa no escapa m * (m-1) ^ (n-1), porque la primera habitación tiene opciones m, cada uno de la parte delantera y trasera debe ser diferente, más tarde cada selección tiene m-1
4. debido al módulo, no es necesario tener en cuenta el uso de alta precisión y atención al detalle de módulo.

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define ll long long
int main()
{
 ll n,m,s,s1=1,s2=1,t,k;
 scanf("%lld%lld",&m,&n);
 k=n,t=m;
 while(k)
 {
  if(k%2==1) s1=s1*t%100003;
  k/=2;
  t=t*t%100003;
 }
 k=n-1,t=m-1;
 while(k)
 {
  if(k%2==1)
  s2=s2*t%100003;
  k/=2;
  t=t*t%100003;
 }
 s=(s1-m*s2%100003+100003)%100003;
 printf("%lld\n",s);
}
Publicado 12 artículos originales · ganado elogios 1 · visitas 189

Supongo que te gusta

Origin blog.csdn.net/csx_zzh/article/details/105167224
Recomendado
Clasificación