Java程序练习-高中运动会
高中运动会
时间限制: 10000ms内存限制: 2048kB
描述
梦幻城市每年为全市高中生兴办一次运动大会。为促进各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同。为增加比赛的竞争性,希望分成越多队越好。你的任务是由各校的人数,决定最多可分成的队数。
输入
输入文件第一行为一个正整数N,代表学校的个数。接下来有N行,每行为一个正整数,分别代表这N个学校的人数。
输出
最多可分成的队数。
样例输入
3
12
16
20
样例输出
4
提示
学校数不超过500,每个学校人数最多为10000.
分析
求最大公约数
参考代码
时间限制: 10000ms内存限制: 2048kB
描述
梦幻城市每年为全市高中生兴办一次运动大会。为促进各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同。为增加比赛的竞争性,希望分成越多队越好。你的任务是由各校的人数,决定最多可分成的队数。
输入
输入文件第一行为一个正整数N,代表学校的个数。接下来有N行,每行为一个正整数,分别代表这N个学校的人数。
输出
最多可分成的队数。
样例输入
3
12
16
20
样例输出
4
提示
学校数不超过500,每个学校人数最多为10000.
分析
求最大公约数
参考代码
/*
* Title :High school sports meeting
* From :http://nnsznoi.openjudge.cn/nnsz2011/1/
* Time :2011-10-13 22:00PM
* Author :Eric Zhou,binfeihan
* Email :binfeihan@126.com
* Blog :http://blog.csdn.net/binfeihan
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(cin.readLine().trim());
int i,p[] = new int[n];
for(i = 0;i < n;++ i)
p[i] = Integer.parseInt(cin.readLine().trim());
System.out.println(findmaxgcd(p,n));
}
private static int findmaxgcd(int[] p, int n) {
int max = 10000,v = 0;
for(int i = 0;i < n - 1;++ i){
for(int j = i + 1;j < n;++ j){
v = gcd(p[i],p[j]);
if(v < max)
max = v;
}
}
return max;
}
private static int gcd(int a,int b){
int max = Math.max(a, b);
int min = Math.min(a, b);
int mod = max % min;
if(mod == 0)
return min;
else
return gcd(mod,min);
}
}
作者:binfeihan 发表于2011-10-14 10:34:46 原文链接
阅读:117 评论:1 查看评论
浙公网安备 33010602011771号