2017級新生周賽(三)E
阿新 • • 發佈:2018-12-18
1325 Problem E
題目描述
啊啊啊,又是喜聞樂見的英靈召喚環節了,只不過這次的英靈召喚有些許的不一樣,這次我們不再是通過聖遺物召喚了,而是通過一些蘊含著魔力的寶石來召喚英靈,現在在地上擺著n個魔法寶石,這些寶石被排在一個等分的圓上,所以他們形成了一個正n多邊形(一個合格的魔法陣必須是正多邊形哦),這些寶石被順時針的從1到n編號,每個寶石都有一個能量a[i]。
那麼問題來了,地上的寶石有一部分被聖盃汙染了,其中的魔力變成了負數,但是我們召喚出的英靈強弱,和地上所有寶石的魔力值的和有關,魔力值的和越大,召喚出的英靈越強,所以我們可能要拿走一部分被汙染的寶石。但是要求還留在地上的寶石必須仍然構成一個正多邊形,才能召喚出英靈。並且地上剩餘寶石的能量和越大,召喚出的英靈越強。因為可能性實在太多了現在就請你寫個程式來幫助master計算出怎樣選擇,才能召喚出最強的英靈,並且輸出此時地上寶石的能量和
輸入
第一行,一個整數n,代表剛開始是地上寶石的數量 資料範圍:(3 <= n <= 20000) 第二行,n個整數a[1], a[2], a[3],...a[n],表示每個寶石蘊含的能量 資料範圍: (-1000 <= a[i] <= 1000)
輸出
一個數字,召喚出最強英靈時,地上寶石的能量和
樣例輸入
8 1 2 -3 4 -5 5 2 3
樣例輸出
14
提示
樣例:最優時,地上剩餘寶石能量分別為,2, 4, 5, 3。構成一個正4邊形,能量和為14
import java.util.Scanner; public class Yingling { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; int max = 0; for (int i = 0; i < a.length; i++) { a[i] = sc.nextInt(); } int temp = 0; if(n%2==0) temp = 2; else temp = 3; for (int i = temp; i < a.length; i += 2) { for (int j = 0; j < temp; j++) { int tt = 0; for (int j2 = j; j2 < a.length; j2 += temp) { tt += a[j2]; } max = Math.max(tt, max); } if(n/i<=3) { break; } } System.out.println(max); } }