📝 Descrição
HackerLand University has the following grading policy:
Every student receives a in the inclusive range from to . Any grade less than 40 is a failing grade. Sam is a professor at the university and likes to round each student’s grade according to these rules:
- If the difference between the and the next multiple of is less than , round up to the next multiple of .
- If the value of is less than , no rounding occurs as the result will still be a failing grade.
📌 Exemplos
Examplo 1:
- Nota = 84 vai ser arredondada para 85 pois é maior que 38 e (85 - 84 < 3)
- Nota = 29 não vai ser arredondada pois é menor do que 38
- Nota = 57 não vai ser arredondada pois é maior do que 38 mas (60 - 57 = 3)
✅ Casos de teste
Caso 1
Entrada
4 73 67 38 33
Saída
75 67 40 33
🚀 Como resolvi?
Temos duas regras no problema:
- Notas menores do que 38 não são arredondadas
- Notas maiores ou iguais a 38 só serão arredondadas se a diferença entre o próximo multiplo de 5 e o número atual for menor do que 3
A segunda regra nos força termos a capacidade de obtermos o prõximo número múltiplo de 5 do número atual. Para isso, temos de lembrar que D = d*Q + r
, o que nos leva que o prõximo múltiplo seria (Q+1) * 5
🛠️ Implementação
def gradingStudents(grades):
rounded_grades = []
for grade in grades:
next_multiple = (grade // 5 + 1) * 5
if grade >= 38 and next_multiple - grade < 3:
rounded_grades.append(next_multiple)
else:
rounded_grades.append(grade)
return rounded_grades
🧠 O que aprendemos?
Dividir o problema em problema menores sempre nos ajudará.