import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.TreeMap;
public class Main1 {
public static void main(String[] args) {
new Main1();
}
int l;
public Main1() {
Scanner s = new Scanner(System.in);
while (s.hasNextInt()) {
int count = s.nextInt();
if (count == 0) {
break;
}
NumNum nn = new NumNum();
int sum = 0;
for (int i = 0; i < count; i++) {
int num = s.nextInt();
sum += num;
nn.add(num, 1);
}
int max = nn.map.keySet().iterator().next();
for (int i : getList(max, sum)) {
l = i;
if (exec(nn, i)) {
System.out.println(i);
break;
}
}
}
s.close();
}
public List<Integer> getList(int max, int n) {
List<Integer> list = new ArrayList<Integer>();
for (int i = max; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
list.add(i);
if (i * i != n) {
list.add(n / i);
}
}
}
Collections.sort(list);
return list;
}
public boolean exec(NumNum nn, int length) {
for (Iterator<Integer> i = nn.map.keySet().iterator(); i.hasNext();) {
int num = i.next();
int allCount = nn.map.get(num);
if (allCount == 0) {
continue;
}
int needCount = length / num;
if (needCount == 0) {
continue;
}
int count = Math.min(allCount, needCount);
nn.del(num, count);
int left = length - num * count;
if (left == 0) {
if (nn.isEmpty()) {
return true;
} else {
if (!exec(nn, l)) {
nn.add(num, count);
} else {
return true;
}
}
} else {
if (!exec(nn, left)) {
nn.add(num, count);
} else {
return true;
}
}
}
return false;
}
}
class NumNum {
TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer arg0, Integer arg1) {
return arg1 - arg0;
}
});
public void add(int i, int j) {
if (map.containsKey(i)) {
map.put(i, map.get(i) + j);
} else {
map.put(i, j);
}
}
public void del(int i, int j) {
map.put(i, map.get(i) - j);
}
public boolean isEmpty() {
for (Iterator<Integer> i = map.values().iterator(); i.hasNext();) {
if (0 != i.next()) {
return false;
}
}
return true;
}
}
分享到:
相关推荐
标题中的"C# ——自定义线程池",意味着我们将探讨如何利用C#语言构建一个自定义的线程池系统。这涉及到对.NET Framework的深入理解,特别是`System.Threading`命名空间下的类和接口,如`ThreadPool`、`Thread`、`...
本压缩包"小程序——自定义组件.rar"可能包含了一系列关于如何创建、使用和优化自定义组件的教程、示例代码和相关资源。 首先,自定义组件的创建是通过继承微信小程序提供的`Component`对象来实现的。开发者需要在`...
此"IOS应用源码——自定义Cell.rar"文件提供了一种实践方法,帮助开发者深入理解并掌握自定义UITableViewCell的过程。以下是对这个主题的详细解释: 一、自定义Cell的必要性 在标准的iOS表格视图(UITableView)中...
"安卓Android源码——自定义时钟.zip"这个压缩包就是一个专注于讲解如何在Android应用中自定义时钟视图的教程资源。通过分析提供的源码和文档,我们可以深入理解Android系统的时钟组件工作原理,并学习如何构建自己...
这个压缩包“IOS应用源码——自定义Cell.zip”显然包含了一个示例项目,展示了如何在iOS应用中自定义UITableViewCell。下面将详细探讨自定义Cell的关键知识点。 首先,了解UITableViewCell的基本结构是必要的。...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑解耦,通过面向对象的方式处理数据。在实际项目开发中,有时我们可能需要对数据库中的某些字段使用自定义的...
本资源"IOS应用源码——自定义的tab bar 视图.rar"提供了一个关于如何自定义Tab Bar视图的实例,对于学习iOS开发特别是界面设计和用户体验优化的开发者来说,这是一个非常有价值的学习材料。 在iOS中,系统的...
这个“安卓Android源码——自定义表格自动刷新数据.rar”压缩包提供了实现这一功能的示例源码,帮助开发者了解如何在Android环境中高效地处理动态更新的数据。 首先,我们来看“JavaApk源码说明.txt”。这个文件很...
本资源是博客《鱼眼索引控件详解之一 —— 自定义索引器》的源码,通过分析和学习,开发者可以深入理解如何在Android中自定义这种索引器。 首先,我们来探讨一下Android中自定义索引器的基本概念。在Android的...
这个“IOS应用源码——自定义action sheet效果库.rar”显然包含了用于实现自定义Action Sheet效果的源代码。以下是对这个库可能包含的关键知识点的详细解释。 1. **UIActionSheet**: UIActionSheet是Apple提供的...
本资源包“安卓Android源码——自定义头部控件,简单易用.zip”提供了一个实现这一功能的示例,帮助开发者快速理解和创建自己的自定义头部组件。 1. **自定义头部控件的基本概念**: 在Android中,自定义头部控件是...
"IOS应用源码——自定义的马赛克时间风格.rar"这个压缩包文件提供了一个独特的案例,展示了如何在iOS应用中创建一个自定义的马赛克时间显示样式。通过分析和学习这个源码,开发者可以深入理解iOS UI设计和自定义控件...
这个压缩包文件"安卓Android源码——自定义适配器的ExpandableListView.zip"包含了一份关于如何在Android应用中自定义适配器以实现`ExpandableListView`功能的详细教程和示例代码。 首先,我们要理解`...
这个压缩包文件"安卓Android源码——自定义适配器的ExpandableListView.rar"包含了一份关于如何在Android应用中自定义`ExpandableListView`适配器的详细文档(自定义适配器的ExpandableListView.doc)以及一个实际的...
"IOS应用源码——自定义的马赛克时间风格.zip"这个压缩包包含了一种独特的马赛克时间显示风格的源代码,适合那些希望在自己的iOS应用中添加个性化时间显示功能的开发者。以下是关于这个主题的详细知识点: 1. **...
本压缩包文件“小程序模块化开发——自定义组件.zip”聚焦于小程序的模块化开发,尤其是自定义组件的使用,这是一项关键技能,可以帮助开发者更高效地构建和维护复杂的小程序项目。 自定义组件是小程序模块化开发的...
本示例代码“IOS源码——自定义Tab Bar的文字、颜色和图片加箭头.zip”专注于如何个性化定制Tab Bar,包括文字、颜色以及添加箭头效果,为用户提供更具特色的交互体验。 首先,我们要理解Tab Bar的基础结构。Tab ...
在这种情况下,使用自定义数据源的单选列表对话框(Dialog)是一种理想的选择。本文将详细介绍如何在Android中实现这样一个功能。 首先,我们来理解“单选对话框”是什么。单选对话框,通常以列表形式呈现,用户...
本项目提供的"安卓Android源码——自定义本地相册的功能,可以多选图片用.zip"就是一个解决此类问题的示例。下面将详细解析其中涉及的关键知识点。 首先,我们需要理解Android系统的存储结构和权限管理。在Android...
在提供的压缩包中,可能包含了一个自定义 SeekBar 的示例源码,通过阅读 `源码说明.txt` 文件,你可以了解作者如何实现自定义效果。`3-130501_1.jpg` 和 `3-130501_2.jpg` 可能是展示自定义 SeekBar 效果的截图,...