首页 > 其他 > 详细

E - Teams

时间:2017-07-21 00:40:36      阅读:325      评论:0      收藏:0      [点我收藏+]
 1 /*
 2 n个学校,第i个有 个参赛者,一个队伍k个人,每个队伍所有人必须来自同一学校,
 3 求k使得队伍数量m最少。
 4 因为k必须整除每个学校的参赛者数量
 5 直接用gcd
 6 */
 7 #include <bits/stdc++.h>
 8 using namespace std;
 9 int gcd(int a,int b)
10 {
11      return b ? gcd(b,a%b) : a;
12 }
13 int main()
14 {
15     int n;
16     scanf("%d",&n);
17     while(n--)
18     {
19         int m;
20         int num[1010];
21         scanf("%d",&m);
22         for(int i=0;i<m;i++)
23             scanf("%d",&num[i]);
24         if(m==1)
25         {
26             printf("%d 1\n",num[0]);
27             continue;
28         }
29         int b=gcd(num[0],num[1]);
30         for(int i=2;i<m;i++)
31             b=gcd(b,num[i]);
32         int sum=0;
33         for(int i=0;i<m;i++)
34             sum=sum+num[i]/b;
35         printf("%d %d\n",b,sum);
36     }
37 }

 

E - Teams

原文:http://www.cnblogs.com/kearon/p/7215283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!