Vai al contenuto principale
e-Disciplinas
  • Disciplinas »
    2026 2025 2024 2023 2022 2021 2020 2019 2018 2017 2016 2015 2014 2013 2012 AACCs/FFLCH Pró-Reitoria de Pós-Graduação Outros
  • Suporte »
    Acesso Perfis Ouvintes Docentes Criação de Disciplinas da USP Documentação HelpDesk e Contato Guia de uso Sobre
  • Italiano ‎(it)‎
    Deutsch ‎(de)‎ English ‎(en)‎ Español - Internacional ‎(es)‎ Français ‎(fr)‎ Italiano ‎(it)‎ Português - Brasil ‎(pt_br)‎
  • Chiudi
    Attiva/disattiva input di ricerca
  • Acessar

CCM0128 - Computação II (2025i)

  1. Home
  2. Corsi
  3. 2025
  4. RUSP
  5. CCM
  6. 0128.2025i
  7. Exercícios-programa
  8. E01 K-Sum

E01 K-Sum

Aggregazione dei criteri
Aperto: giovedì, 27 febbraio 2025, 00:00
Data limite: domenica, 23 marzo 2025, 23:59

Considere o seguinte problema:

Problema K-Sum
- Instância: um inteiro \(k\geq1\) e uma sequência $a_0,\dots,a_{N-1}$ de $N$ inteiros
- Pergunta: qual é o número de $k$-uplas $(i_0,\dots,i_{k-1})$ tais que $0\leq i_0<\dots<i_{k-1}<N$ e $a[i_0]+\dots+a[i_{k-1}]=0$?

Neste exercício, você deve escrever um programa que resolve o Problema K-Sum. Seu programa deve chamar-se KSum.java. Seu programa deve receber $k$ na linha de comando e deve receber os $N$ inteiros $a_0,a_1,\dots$ na entrada padrão. Seu programa deve enviar a resposta para a saída padrão. Seu programa deve também enviar para a saída padrão o tempo gasto por ele para determinar a resposta. Para medir esse tempo, use o mesmo esquema usado em ThreeSum.java. Por simplicidade, você pode supor que $1\leq k\leq N/2$ (o caso $k>N/2$ pode ser reduzido a uma variante do Problema K-Sum com $k\leq N/2$).

Observação. Note que KSum.java generaliza ThreeSum.java, no sentido que a execução de KSum.lava com $k=3$ equivale à execução de ThreeSum.java.

Exemplos de execução.  Alguns exemplos de execução seguem abaixo. O programa Generator.java usado nestes exemplos gera sequências aleatórias de inteiros, como visto em sala.

$ java-introcs Generator 3 6 314314
-2
-1
1
1
-3
-2
$ java-introcs Generator 3 6 314314 | java-introcs ThreeSum
elapsed time = 0.0
2
$ java-introcs Generator 3 6 314314 | java-introcs KSum 3
elapsed time = 0.0
2
$ java-introcs Generator 100000 1000 314314 | java-introcs ThreeSum
elapsed time = 0.188
614
$ java-introcs Generator 100000 1000 314314 | java-introcs KSum 3
elapsed time = 1.349
614
$ java-introcs Generator 50 50 314314 | java-introcs ThreeSum
elapsed time = 0.0
146
$ java-introcs Generator 50 50 314314 | java-introcs KSum 3
elapsed time = 0.001
146
$ java-introcs Generator 50 50 314314 | java-introcs KSum 4
elapsed time = 0.004
1577
$ java-introcs Generator 50 50 314314 | java-introcs KSum 5
elapsed time = 0.02
12481
$ java-introcs Generator 50 50 314314 | java-introcs KSum 9
elapsed time = 18.802
11480449
$ java-introcs Generator 50 50 314314 | java-introcs KSum 10
elapsed time = 79.682
44929374
$ java-introcs Generator 50 34 314314 | java-introcs KSum 17
elapsed time = 27.051
8736749
$ java-introcs Generator 50 36 314314 | java-introcs KSum 18
elapsed time = 107.782
32540221
$

Siga os exemplos acima para formatar a saída de seu programa.

Desempenho.  Seu programa KSum.java pode ter tempo de execução proporcional a $k{N\choose k}$, mas não pior. Note que para valores um pouco maiores de $k$, é natural que não seja possível tratar entradas com $N$ grande.

Observação.  Um exercício teórico interessante é provar que de fato seu programa tem tempo de execução como exigido. Neste exercício, você não precisa entregar tal demonstração, mas é um exercício recomendado.

Entrega.  Entregue apenas seu programa KSum.java.

  • Generator.java Generator.java
    27 febbraio 2025, 20:37
  • ThreeSum.java ThreeSum.java
    27 febbraio 2025, 20:37
◄ S06 O teorema de Erdős e Szekeres
E02 Three-sum em tempo quadrático ►

Blocchi

Salta Navigazione
  • Home

    • e-Disciplinas

      • I miei corsi

      • Tag

      • Ricerca

      • PaginaSobre

      • PaginaHelp Desk e Contato

      • PaginaGuia

    • I miei corsi

    • Corsi

      • 2025

        • CENA

        • EACH

        • ECA

        • EE

        • EEFE

        • EEFERP

        • EEL

        • EERP

        • EESC

        • EP

        • ESALQ

        • FAU

        • FCF

        • FCFRP

        • FD

        • FDRP

        • FE

        • FEA

        • FEARP

        • FFCLRP

        • FFLCH

        • FM

        • FMBRU

        • FMRP

        • FMVZ

        • FO

        • FOB

        • FORP

        • FSP

        • FZEA

        • IAG

        • IAU

        • IB

        • ICB

        • ICMC

        • IEB

        • IEE

        • IF

        • IFQSC

        • IFSC

        • IGc

        • IME

        • IO

        • IP

        • IPEN

        • IQ

        • IQSC

        • IRI

        • HRAC

        • MAC

        • MAE

        • MP

        • MZ

        • RUSP

          • PRG

          • CCM

            • CCM0118-235-2025

            • CCM0214-2025

            • CCM0113-235-2025

            • CCM0212-234-2025

            • CCM0211-2025

            • CCM0213-2025

            • CCM0218-234-2025*

            • CCM0218-234-2025

            • CCM0114-235-2025

            • Biologia 1 - 2025

            • CCM0215-134-2025

            • CCM0121-2025

            • CCM0221-2025

            • 0128.2025i

              • Introduzione

              • Exercícios propostos em sala

              • Exercícios-programa

                • CompitoE01 K-Sum

            • CCM0122-134-2025

            • CCM0223-133-2025

            • CCM0222-133-2025

            • CCM0224-133-2025

            • CCM0124-134-2025

          • IAL

          • DPG

          • PDPD

          • PDPD

          • PDPD

          • PDPD

          • PDPD2025

          • PDPD2025

          • Ciclo PDPD2025

      • 2026

      • 2024

      • 2023

      • 2022

      • 2021

      • 2020

      • 2019

      • 2018

      • 2017

      • 2016

      • 2015

      • 2014

      • 2013

      • 2012

      • Grupos de Estudos, Pesquisa e Outros

      • PRPG - Pró-Reitoria de Pós-Graduação

      • STI

Blocchi supplementari

Ospite (Login)
Powered by Moodle