Contrato de jogo de Niuniu e Niu Coke

Link: https://ac.nowcoder.com/acm/contest/11334/A
Fonte: Niuke

Descrição Título
Invenção da cola bovina, um dado de n lados (pontos respectivamente de {1} a {1} NN, probabilidade de lançamento de cada avião é \ FRAC {1} {n}
n
1 ) para jogar com a carne, carne porque Ele é um imperador europeu, então ele queria testar o caráter de Niuniu. Ele disse a Niuniu para deixar Niuniu rolar m {} m dados. Se Niuniu rolar todos os rostos com {} nn, até Niuniu ganha, Niuniu acredita em si mesmo. Pin, basta apostar em um pacote de barras picantes com Niu Coke, dizendo que ele definitivamente pode jogar todos os pontos por {} nn macarrão, mas Niu Niu está com um pouco de medo de perder a aposta. Quero que você o ajude a calcular sua probabilidade de perder com antecedência? Descrição da entrada: Existem vários grupos de exemplos de entrada, a primeira linha é o número de grupos de amostra t (t \ leq 1 × 10 ^ 6) t (t≤1 × 10 6 ) As próximas t linhas têm cada um inteiro n e m, Indica o número de faces dos dados e o número de lances do touro






(N, m <= 1 × 10 ^ 9) (n, m <= 1 × 10
9

Descrição de
saída : saída t linhas, cada linha é produzida na forma de pontuação p / q mod 1e9 + 7

Exemplo 1 Cópia de
entrada 1 2 1 Cópia de saída 500000004 Observações: Os dados são maiores, é recomendado usar entrada e saída mais rápidas







Insira a descrição da imagem aqui

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int mod = 1e9 + 7;

typedef long long LL;

LL qmi(int a, int b, int mod){
    
    
	LL res  = 1 % mod;
	while(b){
    
    
		if (b & 1)   res = res % mod * (a % mod) % mod;
		a = (LL)a % mod * a % mod;
		b >>= 1;
	}
	return res % mod;
}

int main(){
    
    
	int T;
	scanf("%d", &T);
	
	while(T --){
    
    
		int n, m;
		scanf("%d%d", &n, &m);
	//	cout << qmi(2, 5, mod) << endl;
		LL P1 = qmi(n, m, mod) - 1;
		LL temp = P1 + 1;
	//	cout << temp << endl;
		LL P2 = qmi(temp, mod - 2, mod);
	//	cout << P2 << endl;
		LL ans = (P1 * P2) % mod;
		
		printf("%lld\n", ans);
	}
	
	return 0;
}

Acho que você gosta

Origin blog.csdn.net/qq_45772483/article/details/112554538
Recomendado
Clasificación