题目出自 APCS 网站 > 历次试题 > 2016-10-29_实作题 > 第二题 最大和
连结
解答仅供参考
解答:
#include <stdio.h>#include <stdlib.h>#include <algorithm>using namespace std;int main(void){ int n, m; scanf("%d %d", &m, &n); //将储存最大值的阵列归零 int max_num[m]; for (int i = 0; i < m; i++) { max_num[i] = 0; } //找出每一群数字的最大值 int num; int sum = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { scanf("%d", &num); max_num[i] = max(max_num[i], num); } sum += max_num[i]; } printf("%d\n", sum); //找出可被最大总和整除的被选择数字 bool hasDiv = false; for (int i = 0; i < m; i++) { if (sum % max_num[i] == 0) { if (hasDiv) { printf(" "); } printf("%d", max_num[i]); hasDiv = true; } } //所有数字都不能整除 if (!hasDiv) { printf("-1"); } system("pause"); return 0;}
输入:
3 21 56 41 1
4 36 3 22 7 94 7 19 5 3
输出:
126 1
31-1