yuharu. așa că am scris cum. Nu treceți prin toate numerele, dar înțelegeți mai întâi ce ar trebui să fie factorizarea primară (factorizare). Și apoi luați doar primele numere prime - atunci va fi un număr minim.
Numărul dorit este reprezentat în * a *. * a * b * b *. * b * c.
unde a, b, c sunt numere prime diferite.
De exemplu
2 * 2 * 3 * 5 * 5
Această descompunere poate fi împărțită în jumătate în mai multe moduri diferite
| | aabcc
a | aabcc
aa | bcc
ab | ABCC
.
și așa mai departe.
Numărul acestor opțiuni de separare este k
Trebuie să găsiți astfel de secvențe aabc care vă dau exact numărul de partiții specificate.
După aceea, cum ați venit cu câțiva solicitanți ai diviziei
de exemplu, aabbc și abcd
Înlocuiți literele cu primele numere prime - și vă uitați la opțiunea care va da numărul minim.
De câte ori apare o scrisoare, cu atât mai mic trebuie să corespundă cu numărul primei.
Dar totuși va trebui să verificați câteva opțiuni.
codul pe care l-am postat pe site în programarea graficelor - cu ++
tlito.ru/node/203
aveți un cod greșit, doar cu unele cifre trec, verificați și vedeți-vă pentru dvs. :)
Am observat că nu am lucrat cu 1, fix: am adăugat o linie la începutul funcției de verificare dacă k = 1. dar cu ce nu merge? codul și ecranul de tipărire nou aici tlito.ru/node/203