Jump to content


herison

Member Since 13/10/2010
Offline Last Active 17/10/2010, 22:43
-----

Topics I've Started

Algoritmo Plagio Musical Consegui

14/10/2010, 18:46

Algoritmo plagio musical consegui
Gente, consegui resolver o algoritmo do plagio Musical
Agora se vcs puderem me ajudar a implementar o codigo em java ficaria agradecido
desde ja obrigado =D aqui em baixo vai o codigo em portugol =D


Problema H da maratona de programação de 2010.
- Plágio Musical –

M: Vetor[1..20] de inteiro;
T:Vetor[1..5] de inteiro ;
Ab,A,A#,B,C,C#,Db,D,D#,E,F,F#,Gb,G,G#: Cadeia;
i: inteiro;

Inicio

Ab < A < A# < B < C < C# < Db < D < D# < E < F < F# < Gb < G < G# ;

para i <-- 1 até 20 faça
leia ( M ) ;
fim-para
para i <-- 1 até 5 faça
leia ( T ) ;
fim-para
Se ( T > N*M ) então
Escreva ("Houve plagio") ;
Senao
Se ( T < N*M ) então
Escreva (“Houve Plagio”) ;
fim-se
fim-se
Se ( T = M ) então
Escreva ("Concerteza houve plagio") ;
fim-se
Se ( T ≠ M ) então
Escreva("Nao houve plagio") ;
fim-se
Se ( T > M ) então
Escreva (“Não houve plagio”) ;
Senao
Se ( T < M ) então
Escreva (“Não houve plagio”) ;
fim-se
fim-se

Fim

Algoritmo De Plagio Musical

14/10/2010, 18:42

Problema H
Plagio Musical
Nome do arquivo fonte: plagio.c, plagio.cpp ou plagio.java
As notas musicais sao unidades basicas da musica ocidental tradicional. Cada nota esta
associada a uma frequencia. Duas notas musicais cujas frequencias fundamentais tenham uma
relacao de potencia de 2 (uma metade da outra, uma duas vezes a outra, etc.) sao percebidas
como muito similar. Por isso, todas as notas com esse tipo de relacao recebem o mesmo nome,
como descrito a seguir.
Ha doze notas basicas, em uma sequencia crescente de frequencias, cada nota separada da
anterior por uma mesma distancia na escala musical (essa distancia e chamada de meio-tom).
Sete dessas doze notas sao representadas por letras do alfabeto (A, B, C, D, E, F e G). A tabela
abaixo mostra a distˆancia, em meio-tons, entre essas notas.
Notas A-B B-C C-D D-E E-F F-G G-A
Numero de meios-tons 2 1 2 2 1 2 2
Note que ha cinco notas que nao sao representadas pelas letras do alfabeto: as que estao
entre A e B, entre C e D, entre D e E, entre F e G e entre G e A.
As notas podem ser modificadas por duas alteracoes cromaticas: sustenido e bemol, representadas
respectivamente pelos sımbolos ‘#’ e ‘b’. Sustenido altera a nota em meio tom para
cima, e bemol altera a nota em meio tom para baixo. Uma nota com alteracao cromatica e
denotada pelo nome da nota seguida pelo sımbolo da alteracao. Note que com esse esquema
conseguimos representar todas as doze notas.
A figura abaixo ilustra o nome das notas, segundo o esquema descrito acima, em um trecho
de teclado de piano.
C D E F G A B C D E F G A B
C# D# F# G# A# C# D# F# G# A#
Db Eb Gb Ab Bb Db Eb Gb Ab Bb
Fb E# Cb B# Fb E# B# A#
Uma melodia pode ser representada por uma sequencia de notas musicais. Por exemplo,
A A D C# C# D E E E F# A D G# A
e uma melodia muito conhecida. Note no entanto que, como as distancias entre os meios-tons
sao sempre iguais, a mesma melodia pode ser escrita iniciando em outra nota (dizemos que a
melodia est´a em outro tom):
B B E D# D# E Gb Gb Gb G# B E A# B



Maratona de Programacao da SBC – ACM ICPC – 2010 14
Sua vizinha e uma famosa compositora que suspeita que tenham plagiado uma de suas
musicas. Ela pediu a sua ajuda para escrever um programa que, dada a sequencia de notas da
melodia de sua musica, e a sequencia de notas de um trecho de melodia suspeito, verifique se
o trecho supeito ocorre, em algum tom, na musica dada.
Entrada
A entrada e composta por varios casos de teste. A primeira linha de um caso de teste contem
dois inteiros M e T (1 <= (maior ou igual) M <= 100000, 1 <= T <= 10000, T <= M), indicando respectivamente o
numero de notas da musica e do trecho suspeito de ter sido plagiado. As duas linhas seguintes
contem M e T notas, respectivamente, indicando as notas da musica e do trecho suspeito.
As notas em cada linha sao separadas por espaco; cada nota e uma dentre ‘A’, ‘B’, ‘C’, ‘D’,
‘E’, ‘F’ ou ‘G’, possivelmente seguida de um modificador: ‘#’ para um sustenido ou ‘b’ para um
bemol.
O ultimo caso de teste e seguido por uma linha que contem apenas dois numeros zero
separados por um espaco em branco.
Saıda
Para cada caso de teste, imprima uma unica linha contendo um caractere: ‘S’ caso o trecho
realmente tenha sido plagiado pela m´usica ou ‘N’ caso contrario.
Exemplo de entrada
16 4
D G A B C D G G G C D E F# G C C
G G C D
12 2
C C# D D# E F F# G G# A A# B
C D
12 2
C Db D Eb E F Gb G Ab A Bb B
C D
4 3
C E G Bb
D F# A
0 0
Exemplo de sa´ıda
S
N
N
S


ALGUEM TEM UMA IDEIA DE COMO CHEGAR NA SOLUÇAO DESSE PROBLEMA? ME AJUDEM POR FAVOR ESSE TRABALHO VALE 6 PTS :X

Algoritmo plagio musical consegui
Gente, consegui resolver o algoritmo do plagio Musical
Agora se vcs puderem me ajudar a implementar o codigo em java ficaria agradecido
desde ja obrigado =D aqui em baixo vai o codigo em portugol =D


Problema H da maratona de programação de 2010.
- Plágio Musical –

M: Vetor[1..20] de inteiro;
T:Vetor[1..5] de inteiro ;
Ab,A,A#,B,C,C#,Db,D,D#,E,F,F#,Gb,G,G#: Cadeia;
i: inteiro;

Inicio

Ab < A < A# < B < C < C# < Db < D < D# < E < F < F# < Gb < G < G# ;

para i <-- 1 até 20 faça
leia ( M ) ;
fim-para
para i <-- 1 até 5 faça
leia ( T ) ;
fim-para
Se ( T > N*M ) então
Escreva ("Houve plagio") ;
Senao
Se ( T < N*M ) então
Escreva (“Houve Plagio”) ;
fim-se
fim-se
Se ( T = M ) então
Escreva ("Concerteza houve plagio") ;
fim-se
Se ( T ≠ M ) então
Escreva("Nao houve plagio") ;
fim-se
Se ( T > M ) então
Escreva (“Não houve plagio”) ;
Senao
Se ( T < M ) então
Escreva (“Não houve plagio”) ;
fim-se
fim-se

Fim

IPB Skin By Virteq