Submeter | Todas submissőes | Melhores | Voltar |
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? |