滴滴测开笔试第二道编程AC代码
#include<iostream> #include<vector> using namespace std; int main() { int n; while(cin >> n){ vector<int> data(n); int sum = 0; for(int i = 0; i < n; i++){ cin >> data[i]; sum += data[i]; } if(n < 6)cout << sum << endl;//如果是小于6,直接输出 else{ for(int j = 3; j <= n; j++){//对3边形以上枚举 if(n%j == 0){//求余,子边形 int tsum = 0, step = n/j;//tsum是每组的和,step是步长 for(int i = 0; i < n/j; i++){//枚举开始的起点 tsum = 0; for(int k = i; k < n; k += step) tsum += data[k];//算每个子边形的和 sum = max(tsum, sum);//取最大 } } } } cout << sum << endl; } return 0; }
#滴滴##笔试题目##秋招##题解##测试开发工程师#