Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

HNUMBER - H Numeros

Ualter é um garoto muito inteligente, ele ama bastante matemática e qualquer coisa relacionada com números. Recentemente seu amigo Matheus Pheverso mostrou a ele um grupo de números conhecido como H-Números. Este amigo também contou a ele que na Grécia Antiga, esse grupo de números era usado para criar musicas. A descrição matématica dos H-Números é a seguinte:

 

  • Para quaquer inteiro N, um inteiro positivo A só é considerado H-Number em relação a N se e somente se:

    - MMC(N,A) = N * A

  • MMC é o Minimo Multiplo Comum entre dois números.

  • Ex1: N = 20, H-Números = {1,3,7,9,11,13,17,19}

  • Ex2: N = 10, H-Números = {1,3,7,9}

 

Ualter ama musica classica, principalmente as composições de Pachelbel. Um dos seus sonhos é criar uma musica bonita baseado nos ensinamentos da Grécia Antiga, sendo assim ele está disposto a fazer uma versão de “Canon in D” usando apenas H-Números assim como era feito na Grécia Antiga. Para resolver este problema, ele precisa saber para um dado inteiro N o numero de H-Números de N que estão dentro do intervalo [1,M], inclusivo.

Tarefa

Dado um inteiro Q – a quantidade de queries – e dois numeros N e M em cada query, você deve retornar a quantidade de H-Números de N que estão entre 1 e M, inclusivo.

Entrada

A primeira linha da entrada contém um inteiro Q ( 1 <= Q <= 10⁵ ) representando o número de queries. As próximas Q linhas vão conter cada dois inteiros N e M ( 1 <= N, M <= 10⁵, M < N ).

Saída

Você deve imprimir para cada query um inteiro xi representando o número de H-Números de N que estão no intervalo [1,M], inclusivo.

Exemplo

 

Entrada

3

20 15

7 3

10 8

Saida

6

3

3

 


Adicionado por:Mateus Dantas [ UFCG ]
Data:2013-11-27
Tempo limite:0.5s-1s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL
Origem:Mateus Dantas

hide comments
2014-06-06 23:41:22 Altamir Gomes Bispo Junior [UFSCar]
Aqui passou ok com a saída das respostas a cada query. Năo deixe uma linha em branco a cada resposta (a amostra de saída pode confundir a respeito desse detalhe).
2014-06-03 20:24:30 Edson Silva CCM [UFABC]
Pessoal que conseguiu passar, a minha dúvida é sempre referente ao stdin (cin, get, etc..) e stdout (cout, printf, etc..):
1 - devo armazenar 'n' respostas (conforme a quantidade de queries) antes de dar o stdout?
2 - devo armazenar todas as queries para dar listar em stdout geral no final?
3 - ou devo ir dando stdout a cada resposta que encontro?
2014-04-18 01:36:07 Frederico Miranda Brandão Alves
Peters, a funçăo phi de Euler me inspirou a resolver esse problema.

Se MMC(N,A) = N * A , entăo isso significa que N e A săo coprimos. Entăo, a verdadeira pergunta é: Quantos números, no intervalo [1, M], săo coprimos a N? Se M = N, entăo é phi(n). Se năo for, podemos usar a estratégia que prova a funçăo phi para calcular a coisa. Isto é:

Eu sei que existem M números no cojunto [1, M] e sei os fatores de N. Neste exemplo, săo os primos p1, p2 e p3. Ora, seja A um número qualquer em [1, M]. Se um desses primos divide A, entăo esse é um intrometido, um năo-número-H de N. M -quantos năo-números-H em [1,M] = quantos números-H em [1,M]. Entăo vamos achar os năo-números-H!

1) Total = M.

2) Quantos números inteiros, menores ou iguais a M, săo divisíveis por p1? M / p1. E por p2? M / p2. E p3? M / p3. Aí tiramos esses valores do total.

3) Mas tem um problema. Números foram retirados mais de uma vez. os múltiplos de p1 * p2, por exemplo, foram retirados do total duas vezes. o mesmo aconteceu com p1 * p3 e p2 * p3. Entăo temos que contar quantos números em [1,M] săo divisíveis por esses pares e reintegrá-los ao total.

3) Mas agora outro problema surge! Os múltiplos do trio p1 * p2 * p3 foi incluso duas vezes (por causa de p1 * p2 e p2 * p3). Entăo temos que encontrar a quantidade de múltiplos desse trio em [1,M] e retirar isso do total.

(Existe um princípio da inclusăo-exclusăo aqui. Consegue vę-lo?)

Depois disso, a variável Total é exatamente a quantidade de números-H em [1,M]
2014-04-07 14:17:35 Peters
Acredito que o meu algoritmo esteja calculando os números H de maneira correta, ocorre que estou excedendo o tempo limite para execuçăo.
Alguma dica aí de quem conseguiu?
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.