<jupyter_start><jupyter_text>Exercícios com Vetores  Exercício 1Dada uma sequência de $n$ números, imprimi-la na ordem inversa à da leitura.<jupyter_code>def main():
    n = int(input('n: '))
    l = []
    
    for i in range(n):
        num = float(input(f'Digite o {i+1}º número: '))
        l.append(num)
    
    for i in range(1, len(l) + 1):
        print(f'{l[-i]} ', end='')
    
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 2Deseja-se publicar o número de acertos de cada aluno em uma prova em forma de testes. A prova consta de $30$ questões, cada uma com cinco alternativas identificadas por $A, B, C, D$ e $E$. Para isso são dados:* O cartão gabarito;* O número de alunos da turma;* O cartão de respostas para cada aluno, contendo o seu número e suas respostas.<jupyter_code>def main():
    n_alunos = int(input('Digite o número de alunos: '))
    gabarito = []
    notas = []
    
    for i in range(1, 31):
        x = input(f'Digite o gabarito da {i}ª questão: ')
        gabarito.append(x)
        
    for n in range(n_alunos):
        acertos = 0
        prova_aluno = []
        for i in range(0, 30):
            x = input(f'Digite a {i+1}ª resposta do aluno {n +1}: ')
            prova_aluno.append(x)
            
            if prova_aluno[i].lower() == gabarito[i].lower():
                acertos += 1
        
        notas.append(acertos)
        
    for i in range(len(notas)):
        print(f'Aluno: {i+1} / Nota: {notas[i]}/30')
    
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 3Tentando descobrir se um dado era viciado, um dono de cassino honesto (ha! ha! ha! ha!) o lançou %n% vezes. Dados os $n$ resultados dos lançamentos, determinar o número de ocorrências de cada face.<jupyter_code>def main():
    import random
    
    n = int(input('Quantas vezes deseja lançar o dado? '))
    lista_dado = [0, 0, 0, 0, 0, 0]
    
    for i in range(n):
        x = random.randint(1, 6)
        
        if x == 1:
            lista_dado[0] += 1
        elif x == 2:
            lista_dado[1] += 1
        elif x == 3:
            lista_dado[2] += 1
        elif x == 4:
            lista_dado[3] += 1
        elif x == 5:
            lista_dado[4] += 1
        elif x == 6:
            lista_dado[5] += 1
    
    for i in range(len(lista_dado)):
        print(f'Face {i+1}: {lista_dado[i]} vezes')
        
        
main()<jupyter_output><empty_output><jupyter_text>Exercício 4Dados dois vetores $x$ e $y$, ambos com $n$ elementos, determinar o produto escalar desses vetores.<jupyter_code>def main():
    d = int(input('Digite a dimensão dos vetores: '))
    x = []
    y = []
    prod = 0
    
    for i in range(d):
        v = float(input(f'Digite o {i+1}º elemento do vetor x: '))
        x.append(v)
    
    for i in range(d):
        v = float(input(f'Digite o {i+1}º elemento do vetor y: '))
        y.append(v)
    
    for i in range(d):
        prod += (x[i]*y[i])
    
    print(f'O produto vetorial de x e y é {prod}')
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 5Faça um programa para resolver o seguinte problema:São dadas as coordenadas reais $x$ e $y$ de um ponto, um número natural $n$, e as coordenadas reais de $n$ pontos $(1 < n < 100)$. Deseja-se calcular e imprimir sem repetição os raios das circunferências centradas no ponto $(x,y)$ que passam por pelo menos um dos $n$ pontos dados.* Exemplo : $(x,y) = (1.0, 1.0)$ ; $n = 5$* Pontos : $(-1.0, 1.2)$ , $(1.5, 2.0)$ , $(0.0, -2.0)$ , $(0.0, 0.5)$ , $(4.0, 2.0)$  * Nesse caso há três circunferências de raios: $1.12$, $2.01$ e $3.162$.* Observações:  * Distância entre os pontos $(a,b)$ e $(c,d)$ é $\sqrt{(a-c)^2 + (b-d)^2}$   * Dois pontos estão na mesma circunferência se estão à mesma distância do centro.<jupyter_code>def main():
    from math import sqrt
    
    x_c = float(input('x do centro: '))
    y_c = float(input('y do centro: '))
    n = int(input('Digite a quantidade de pontos (1 < n < 100): '))
    
    num_circle = 0
    x_n = []
    y_n = []
    
    for i in range(n):
        x_n.append(float(input(f'Cordenada x do ponto {i+1}: ')))
        y_n.append(float(input(f'Cordenada y do ponto {i+1}: ')))
    
    for i in range(n):
        flag = False
        dist_i = sqrt((x_c - x_n[i])**2 + (y_c - y_n[i])**2)
        for j in range(i):
            dist_j = sqrt((x_c - x_n[j])**2 + (y_c - y_n[j])**2)
            
            if dist_i == dist_j:
                flag = True
                break
        if Flag == False:
            print(dist_i)
            
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 6*(COMP 89)* Dados dois strings (um contendo uma frase e outro contendo uma palavra), determine o número de vezes que a palavra ocorre na frase.* Exemplo:Para a palavra **ANA** e a frase :**ANA** E MARI**ANA** GOSTAM DE B**ANANA**Temos que a palavra ocorre $4$ vezes na frase.<jupyter_code>def main():
    frase = input('Insira uma frase: ')
    palavra = input('Insira uma palara para achar na frase: ')
    
    cont = 0
    
    for i in range(len(frase)):
        if palavra.lower() == frase[i:len(palavra) + i]:
            cont += 1
            
    print(f'Quantidade de vezes que a palavra {palavra} apareceu na frase: {cont}')
            
        
main()<jupyter_output><empty_output><jupyter_text>Exercício 7*(MAT 88)* Dada uma seqüência de $n$ números reais, determinar os números que compõem a seqüência e o número de vezes que cada um deles ocorre na mesma.* Exemplo: $n = 8$Seqüência: $-1.7$,  $3.0$,  $0.0$,  $1.5$,  $0.0$, $-1.7$,  $2.3$, $-1,7$* Saída:             * $-1.7$ ocorre $3$ vezes  * $3.0$ ocorre $1$ vez  * $0.0$ ocorre $2$ vezes  * $1.5$ ocorre $1$ vez  * $2.3$ ocorre $1$ vez<jupyter_code>def main():
    n = int(input('n: '))
    seq = []
    appear = []
    
    for i in range(n):
        x = float(input(f'{i+1}º: '))
        seq.append(x)
        
    for i in range(len(seq)):
        cont = 0
        if seq[i] not in appear:
            for j in range(len(seq)):
            
                if seq[i] == seq[j]:
                    cont +=1
            appear.append(seq[i])
            
            if cont == 1:
                print(f'{seq[i]} ocorre {cont} vez')
            else:
                print(f'{seq[i]} ocorre {cont} vezes')
        
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 8 Dados dois números naturais $m$ e $n$ e duas sequências ordenadas com $m$ e $n$ números inteiros, obter uma única seqüência ordenada contendo todos os elementos das seqüências originais sem repetição.Sugestão: Imagine uma situação real, por exemplo, dois fichários de uma biblioteca.<jupyter_code>def main():
    m = int(input('m: '))
    n = int(input('n: '))
    list_m = []
    list_n = []
    listao = [] 
    listao_sorted = []
    
    for i in range(m):
        x = int(input(f'Digite o {i+1}º elemento da lista m: '))
        list_m.append(x)
        listao.append(x)
    
    for i in range(n):
        y = int(input(f'Digite o {i+1}º elemento da lista n: '))
        list_n.append(y)
        listao.append(y)
    
    for i in range(len(listao)):
        for index, valor in enumerate(listao_sorted):
            if listao[i] < valor:
                listao_sorted.insert(index, listao[i])
                break
        else:
            listao_sorted.append(listao[i])
    
    print(f'Lista M: {list_m}')
    print(f'Lista N: {list_n}')
    print(f'Lista com todos os elementos ordenados: {listao_sorted}')
    
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 9Dadas duas seqüências com $n$ números inteiros entre $0$ e $9$, interpretadas como dois números inteiros de $n$ algarismos, calcular a seqüência de números que representa a soma dos dois inteiros.* Exemplo: $n = 8$,  * 1ª  seqüência:	 $     8    2    4    3    4    2    5    1$  * 2ª  seqüência:	 $     3    3    7    5    2    3    3    7$  * Soma: 	$1    1    6    1    8    6    5    8    8$<jupyter_code>def main():
    n = int(input('n: '))
    seq_1 = []
    seq_2 = []
    soma = []

    
    for i in range(n):
        x = int(input(f'Digite o {i+1}º termo da sequência 1: '))
        seq_1.append(x)
        
    for i in range(n):
        y = int(input(f'Digite o {i+1}º termo da sequência 2: '))
        seq_2.append(y)

    for i in range(1, n+1):
        soma_t = str(seq_1[-i] + seq_2[-i])
        
        if int(soma_t) >= 10:
            result = soma_t[-1]
            if i != n:
                seq_1[-i-1] += int(soma_t[0])
                soma.append(result)
            else:
                soma.append(soma_t)
        else:
            soma.append(soma_t)
    
    for i in range(1, len(soma)+1):
        print(soma[-i], end='')
        
        
main()<jupyter_output><empty_output><jupyter_text>Exercício 10Calcule o valor do polinômio   $p(x) = a_{0} + a_{1}x + ... + a_{n}x^n$ em $k$ pontos distintos. São dados os valores de $n$ (grau do polinômio), de $ a_{0} + a_{1} + ... + a_{n}$ (coeficientes reais do polinômio), de $k$ e dos pontos $ x_{1} + x_{2} + ... + x_{k}$.<jupyter_code>def main():
    n = int(input('Digite o grau do polinômio: '))
    coef = []
    ponto = []
    
    print('p(x) = a0', end='')
    
    for i in range(1, n+1):
        print(f' + a{i}*x^{i}', end='')
        
    for i in range(n+1):
        x = float(input(f'\nDigite o valor do coeficiente a{i}: '))
        coef.append(x)
    
    print(f'\np(x) = {coef[0]}', end = '')
    for i in range(1, len(coef)):
        print(f' + {coef[i]}*x^{i}', end='')
        
    
    k = int(input('\nQuantos pontos deseja verificar o valor? '))
    
    if k >= 0:
        for i in range(k):
            x = float(input(f'x{i+1}: '))
            ponto.append(x)
        
        for i in range(len(ponto)):
            soma = coef[0]
            for j in range(1,len(coef)):
                soma += ponto[i]*coef[j]
            
            print(f'p({ponto[i]}) = {soma}')
        
    else:
        print('Bye Bye')
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 11Dado o polinômio $p(x) = a_{0} + a_{1}x + ... + a_{n}x^n$, isto é, os valores de $n$ e de $ a_{0} + a_{1} + ... + a_{n}$, determine os coeficientes reais da primeira derivada de $p(x)$.<jupyter_code>def main():
    n = int(input('Digite o grau do polinômio: '))
    coef = []
    total = ''
    
    print('p(x) = a0', end='')
    
    for i in range(1, n+1):
        print(f' + a{i}*x^{i}', end='')
        
    for i in range(n+1):
        x = float(input(f'\nDigite o valor do coeficiente a{i}: '))
        coef.append(x)
    
    print(f'\np(x) = {coef[0]}', end = '')
    for i in range(1, len(coef)):
        print(f' + {coef[i]}*x^{i}', end='')
    
    print(f"\np'(x) = ", end='')
    for i in range(1, n+1):
        coef_d = coef[i]*i
        exp = i-1
        
        result = f'+ {coef_d}*x^{exp}'
        
        if i == 1 or coef[i-1]*(i-1) == 0:
            result = result[2:]
        
        if coef_d != 0:
            if exp !=0:
                if exp == 1:
                    print(result[:-2], end= '')
                else:
                    print(result, end = '')
            else:
                print(f'{coef_d}', end = '')
      
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 12Dado um polinômio $p(x) = a_{0} + a_{1}x + ... + a_{n}x^n$, calcular o polinômio $q(x)$ tal que $p(x) = (x-\alpha )q(x) + p(\alpha)$, para $m$ valores distintos de $\alpha$ (Usar o método de Briot-Ruffini)<jupyter_code># tenho que pensar mais<jupyter_output><empty_output><jupyter_text>Exercício 13Dados dois polinômios reais $p(x) = a_{0} + a_{1}x + ... + a_{n}x^n$ e $q(x) = b_{0} + b_{1}x + ... + b_{m}x^m$ determinar o produto desses polinômios.<jupyter_code>def main():
    n = int(input('Digite o grau dos polinômios P: '))
    coef_p = []
    
    print('p(x) = a0', end='')
    
    for i in range(1, n+1):
        print(f' + a{i}*x^{i}', end='')
        
    for i in range(n+1):
        x = float(input(f'\nDigite o valor do coeficiente a{i}: '))
        coef_p.append(x)
    
    m = int(input('\nDigite o grau do polinômio Q: '))
    coef_q = []
        
    print('q(x) = b0', end='')
    
    for i in range(1, m+1):
        print(f' + b{i}*x^{i}', end='')
        
    for i in range(m+1):
        x = float(input(f'\nDigite o valor do coeficiente b{i}: '))
        coef_q.append(x)
    
    coef_pq = [0]*(len(coef_p) + len(coef_q) - 1)
    
    for i in range(len(coef_p)):
        for j in range(len(coef_q)):
            coef_pq[i+j] += coef_p[i]*coef_q[j]
    
    print('p(x)*q(x) =', end='')
    for i in range(len(coef_pq)):
        
        if i == 0:
            print(f' {coef_pq[i]}', end='')
        else:
            print(f' + {coef_pq[i]}*x^{i}', end='') 
            
                
main()<jupyter_output><empty_output><jupyter_text>Exercício 14  *(POLI 82)* Chama-se sequência de Farey relativa a $n$, a sequência das frações racionais irredutíveis, dispostas em ordem crescente, com denominadores positivos e não maiores que $n$.Exemplo:  Se $n=5$, os termos $\alpha$ da sequência de Farey, tais que $0 < \alpha < 1$ são:![foto_1](https://www.ime.usp.br/~macmulti/figuras/Image515a.gif)Para gerarmos os termos $\alpha$ de uma seqüência de Farey tais que $0 < \alpha < 1$, podemos usar o seguinte processo. Começamos com as frações![foto_1](https://www.ime.usp.br/~macmulti/figuras/Image515b.gif)e entre cada duas frações consecutivas![foto_3](https://www.ime.usp.br/~macmulti/figuras/Image515c.gif)introduzimos a fração:![foto_4](https://www.ime.usp.br/~macmulti/figuras/Image515d.gif)e assim sucessivamente enquanto $j + m \leq  n$. Quando não for mais possível introduzir novas frações teremos gerado todos os termos $\alpha$ da sequência de Farey relativa a $n$, tais que $0 < \alpha < 1$.Usando o processo descrito, determine os termos $\alpha$, $0 < \alpha < 1$, da sequência de Farey relativa a $n$, $n$ inteiro positivo.Sugestão: Gere os numeradores e os denominadores em dois vetores.<jupyter_code># tenho que pensar mais 3<jupyter_output><empty_output><jupyter_text>Exercício 15Em uma classe há $n$ alunos, cada um dos quais realizou $k$ provas com pesos distintos. Dados $n$ , $k$, os pesos das $k$ provas e as notas de cada aluno, calcular a média ponderada das provas para cada aluno e a média aritmética da classe em cada uma das provas.<jupyter_code>def main():
    n = int(input('Digite o número de alunos: '))
    k = int(input('Digite o número de provas: '))
    pesos = [ float(input(f'Digite o peso da prova {i+1}: ')) for i in range(k)]  # list comprehensions
    medias = []
    soma_pesos = 0
    soma_medias = 0
    
    for i in range(len(pesos)):
        soma_pesos += pesos[i]
        
    for i in range(n):
        notas = []
        soma_notas = 0
        for j in range (k):
            x = float(input(f'Insira a nota da {j+1}ª prova do {i+1}º aluno: '))
            notas.append(x)
    
            soma_notas += notas[j]*pesos[j]
            
        medias.append(soma_notas/soma_pesos)
    
    for i in range(n):
        print(f'Média do aluno {i+1}: {medias[i]}')
        soma_medias += medias[i]    
            
    print(f'Média da turma: {soma_medias/n}')
    
    
main()<jupyter_output><empty_output><jupyter_text>Exercício 16
*(QUIM 84)* Dada uma seqüência $x_{1},x_{2},...,x_{k}$ de números inteiros, verifique se existem dois segmentos consecutivos iguais nesta seqüência, isto é, se existem $i$ e $m$ tais que:

$x_{i},x_{i+1},...,x_{i+m-1} = x_{i+m},x_{i+m+1},...,x_{i+2m-1}$

Imprima, caso existam, os valores de $i$ e $m$.

Exemplo: Na seqüência  $7, 9, $ **5, 4, 5, 4** $, 8, 6$ existem $i=3$ e $m=2$.<jupyter_code>def main():
    n = int(input('Digite o comprimento da sequencia: '))
    
    seq = []
    for i in range(1, 1+n):
        e = input(f'Digite o {i}º elemento da sequencia: ')
        seq.append(e)

    achou = False
    
    m = 1
    while not achou and m <= n//2:
        
        i = 0
        while not achou and i <= n-2*m:
            achou = True
            
            j = 0
            while achou and j < m:
                if seq[i+j] != seq[i+m+j]:
                    achou = False
                j += 1
            
            i += 1
    
        m += 1
    
    if achou:
        print(f'i = {i}, m = {m-1}')
    else:
        print('Nao encontrei nada :(')

main()<jupyter_output><empty_output><jupyter_text>Exercício 17
Dada uma seqüência de $n$ números inteiros, determinar um segmento de soma máxima.

Exemplo: Na seqüência $5, 2, -2, -7, 3, 14, 10, -3, 9, -6, 4, 1$ , a soma do segmento é $33$.<jupyter_code>def main():
    n = int(input('n: '))
    seq = [int(input(f'Digite o {i+1}º elemento da sequência: ')) for i in range(n)]  # list comprehensions
    soma_max = 0
    
    for i in range(n):
        for j in range(i+1, n):
            soma = 0
            for num in seq[i:j+1]:
                soma += num
            
            if soma > soma_max:
                soma_max = soma
        
    print(soma_max)
    
    
main()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14685354691075514, 'fraction_numerical': 0.020652173913043477, 'mean_word_length': 2.0375325803649003, 'pattern_counts': {'":': 0, '<': 85, '<?xml version=': 0, '>': 72, 'https://': 4, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '17', 'dir': 'jupyter-structured-clean-dedup', 'id': '274827', 'license': 'Unlicense', 'n_tokens_mistral': 7126, 'n_tokens_neox': 6743, 'n_words': 1773, 'path': 'Macmulti/exercicios_com_vetores.ipynb', 'repo_name': 'ghurone/mac0115', 'size': '17480'}