Description
有N条绳子,它们的长度分别为Li,Li都是正整数。如果从它们中切割出K条长度相同的绳子(绳子的长度为整数),这K条绳子每条最长能有多长?
Input
第一行一个数
,表示绳子的数量。
第二行
个数,分别表示原绳子的长度
,
。
第三行一个数
,表示要切割出的绳子数量。
Output
一行一个大于等于0的整数,表示
条绳子中每条绳子的最大长度,注意:如果无法切割则输出0。
#include<stdio.h>
#include<stdlib.h>
#define N 100005
int cmp(const void *a,const void *b){
return *(int*)b-*(int*)a;
}
int l[N];
main()
{
int n,i,j,k,sum=0,max,num=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&l[i]);
sum+=l[i];
}
qsort(l,n,sizeof(l[0]),cmp);
//for(i=0;i<n;i++) printf("%d\t",l[i]);
scanf("%d",&k);
max=sum/k;
for(i=max;i>=1;i--){
num=0;
for(j=0;j<n;j++){
num+=l[j]/i;
}
if(num>=k){
printf("%d\n",i);
return 0;
}
}
printf("0\n");
}