현재의 A에 대한 품질 계수 먼저 분해 [I], 품질 팩터는 두 가지 가능성이 존재하며, 현재의 X는,이 위치가 나누어 K를 충족한다고 가정이든 그것이 후 후방 X % K 번째 전송, 또는 KX % K로 전송.
ㄱ 각각 만족 [I] 때문에 단지 (a의 다음 위치 [내가 + 1] 효과가 A [i]를 생성하고, 나중에 문제에 새로운 서브 카운트 그래서, 금지 다음 위치에 영향을 미칠 중첩 인형).
i가 모든 요구 분 (a [i]를, XA [I])과, 응답으로서 난 모든 소인수의 합의 최소값을 배치 모든 X의 각각에 대한 품질 계수.
1 #DEFINE HAVE_STRUCT_TIMESPEC 2 #INCLUDE <비트 / stdc ++ H.> 3 사용 공간이 수 std; 4 긴 긴 A [ 1000007 ]; 5 INT 의 main () { 6 IOS :: sync_with_stdio ( 거짓 ); 7 cin.tie (NULL); 8 cout.tie (NULL); 9 긴 길이 N; 10 CIN >> N; 11 긴 긴 합 = 0 ; 12 대 ( 긴 길이 난 = 1; I <= N; ++ I) { 13 CIN >> A [I]; 14 합 + = A [I]; 15 } 16 경우 SUM (<= 1 ) { 17 COUT << - 1 ; 18 반환 0 ; 19 } 20 긴 긴 ANS = 1E18; (21) 에 대한이 ( 긴 길이 난 = 2 ; 나는 <= 합계 *; ++ I) { 22 긴 긴 플래그 = 0 ; 23 일 동안 내가 == (합 % 0) { 24 합 / = I; 25 플래그 = 1 ; 26 } 27 경우 (플래그) { 28 긴 긴 미리 = 0 , 써머 = 0 ; 29 대 ( 긴 길이 , J = 1 , J <= N; ++ j)에 { 30 미리 = (a [J] + 전) % I; 31 써머 + = 분 (I- 미리 사전); 32 } 33 ANS = 분 (ANS, 써머); 34 } 35 } (36) 의 경우 (합계> 1 ) { 37 따라 긴 프리 = 0 , 써머 = 0 ; 38 대 ( 긴 따라 J = 1 ; J <= N; ++ j)에 { 39 미리 = (a [J] + 전) %의 합; 40 써머 + = 분 (sum- 미리 사전); 41 } 42 년 = 분 (써머 년); 43 } 44 COUT << 년; 45 반환 0 ; 46 }