2021 Niu Guest Winter Holiday Algorithm Campo de treinamento básico 6 C. Os últimos três

C. Os últimos três

Link do título: https://ac.nowcoder.com/acm/contest/9986/C

Descrição do título:

Niuniu acabou de estudar o índice recentemente, ele entendeu que 2 ^ 2 = 4, 3 ^ 3 = 27 ...

No entanto, ele agora quer saber: Quais são os três últimos dígitos de 5 ^ n?

Insira uma descrição:

Existem vários conjuntos de dados de entrada.

Insira um número n para cada grupo de dados, o que significa expoente.

Descrição de saída:

Produza os últimos três dígitos de 5 ^ n.

Exemplo 1:

Entrada
1
3
5
Saída
005
125
125
Nota:
Para dados 100%, 0 <= n <= 1e9.

O número de grupos de dados t <= 10 ^ 6.

Ideias para resolução de problemas:

Ⅰ Potência rápida: Deixe módulo = 1000 e use a potência rápida diretamente.
Ⅱ. Regras de descoberta: julgamento especial em n <3 e discussão de paridade em n> = 3.

código mostrado abaixo:

Ⅰ: Potência rápida

#include <iostream>
using namespace std;

int qsm(int a,int b,int c){
    
    
	int res=1;
	while(b){
    
    
		if(b&1)
			res=(res*a)%c;
		a=(a*a)%c;
		b>>=1;	
	}
	return res;
}
int main() {
    
    
	int n;
	while(cin>>n){
    
    
		int ans=qsm(5,n,1000);
		printf("%03d\n",ans);
	}
	return 0;
}

Ⅱ: Encontre a lei

#include <iostream>
using namespace std;

int main()
{
    
    
	int n;
	while(cin>>n)
	{
    
    
		if (n==0) cout<<"001"<<endl;
		else if (n==1) cout<<"005"<<endl;
		else if (n==2) cout<<"025"<<endl;
		else if (n%2==1)cout<<"125"<<endl;
		else cout<<"625"<<endl;
	}
	return 0;
}

Acho que você gosta

Origin blog.csdn.net/weixin_45894701/article/details/114033111
Recomendado
Clasificación