# Problema Graduation Party

**URL:** <https://forum.olinfo.it/t/problema-graduation-party/6548>\
**Category:** Aiuto\
**Created:** [21 Marzo 2021, 11:46am UTC](https://forum.olinfo.it/t/problema-graduation-party/6548 "2021-03-21T11:46:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![StoRovinato](https://forum.olinfo.it/user_avatar/forum.olinfo.it/storovinato/32/786_2.png) [@StoRovinato](https://forum.olinfo.it/u/StoRovinato)\
**Post date:** [21 Marzo 2021, 11:46am UTC](https://forum.olinfo.it/t/problema-graduation-party/6548/1 "2021-03-21T11:46:50Z")

</div>

Stavo provando a risolvere il problema [Graduation Party](https://training.olinfo.it/#/task/ois_confetti/stats) ma non riesco a capire che metodo utilizzare per l’ultimo subtask. In pratica il mio programma calcola prima il MCD tra i primi 2 numeri, poi tra quest’ultimo valore e il terzo elemento, poi tra quest’ultimo valore e il quarto elemento e via così fino all’ultimo. Una volta finito conosco il MCD tra tutti i numeri e da qui procedo con il metodo classico di provare tutti i valori tra 1 e MCD per capire quali sono i divisori del primo numero, poi confronto questi divisori con tutti gli altri numeri e ogni volta che uno non è valido lo elimino. Il problema è che proprio questo modo di trovare i divisori è troppo inefficiente per risolvere l’ultima subtask. Qualcuno potrebbe per favore indicarmi un metodo da poter applicare? Mi basta anche un suggerimento, non serve la soluzione completa

---

<div class="post-metadata">

**Author:** ![zJack1342](https://forum.olinfo.it/user_avatar/forum.olinfo.it/zjack1342/32/711_2.png) [@zJack1342](https://forum.olinfo.it/u/zJack1342)\
**Post date:** [21 Marzo 2021, 11:59am UTC](https://forum.olinfo.it/t/problema-graduation-party/6548/2 "2021-03-21T11:59:40Z")

</div>

> [@StoRovinato](#):
>
> Una volta finito conosco il MCD tra tutti i numeri e da qui procedo con il metodo classico di provare tutti i valori tra 1 e MCD per capire quali sono i divisori del primo numero, poi confronto questi divisori con tutti gli altri numeri e ogni volta che uno non è valido lo elimino

Non è molto chiara questa parte.  
Se ti interessa trovare tutti i divisori di un numero X ti basta provare tutti i valori [1, \sqrt{X} + 1]. Se sai che Y divide X allora X/Y è un divisore di X.

---

<div class="post-metadata">

**Author:** ![StoRovinato](https://forum.olinfo.it/user_avatar/forum.olinfo.it/storovinato/32/786_2.png) [@StoRovinato](https://forum.olinfo.it/u/StoRovinato)\
**Post date:** [21 Marzo 2021, 2:15pm UTC](https://forum.olinfo.it/t/problema-graduation-party/6548/3 "2021-03-21T14:15:27Z")

</div>

Grazie per il suggerimento, effettivamente era molto più semplice di quanto pensassi 😅
