| UNICAMP Selection Contest 2024 |
|---|
| Finished |
Música - Arriety's Song Reza a lenda que Euclides inventou seu famoso algoritmo eficiente para computar o máximo divisor comum (mdc) ao ver um aluno tentando computá-lo com o seguinte algoritmo:
// Algoritmo para computar o mdc(a,b)
long long mdc(long long a, long long b){
long long loops = 0; // contador para fins da questão apenas
while( a != b ){
loops++;
if( a > b ){
a-= b;
} else{
b-=a;
}
}
return a;
}
Seu aluno estava muito feliz ao ver que esse algoritmo funcionava para números pequenos com grande eficiência. Já seu mestre não estava muito impressionado e perguntou quão eficiente seria o algoritmo se a = 1 e b = 1018. Seu aluno responde que este é apenas um caso particular, e que obviamente o máximo divisor comum é 1, logo ninguém sequer usaria um algoritmo para computar isso.
Não satisfeito, Euclides pergunta, "e se a = 6 e b = 123450, quantas operações serão feitas?".
Com desdém, o aluno responde: "Não sei, me diz você".
A lenda segue dizendo que neste momento Euclides voltou para sua casa furioso e decidiu computar quantas operações são feitas no algoritmo do seu aluno, para que ele entenda o quão ineficiente o algoritmo é. A lenda também diz que nessa jornada Euclides acabou encontrando um algoritmo muito eficiente, que faz apenas O(log(max(a, b)) operações.
Será que você também consegue computar quantas operações o algoritmo apresentado iria realizar para cada par a e b? Por operações entenda o valor de loops exposto no código acima.
A primeira linha contém um inteiro t ≤ 500, a quantidade de pares que estamos interessados.
Seguem t linhas, cada uma com um par de inteiros positivos a e b, 1 ≤ a, b ≤ 1018.
Imprima t linhas, cada uma representando a quantidade de laços no algoritmo do aluno para cada par a e b.
4 1 1 15 10 1 1000000000000000 1234500 54321001234500
0 2 999999999999999 44002456
Por operações entenda como o valor de loops no código de C++ exposto. long long é um tipo de dados de 64-bits in C++.
Vale notar que o algoritmo acima só funciona para números inteiros positivos, o que é o caso dessa questão.
| Name |
|---|


