木材加工题目描述:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定了的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。
木头长度的单位是 cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。输入:
第一行是两个正整数 N 和 K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N 是原木的数目,K 是需要得到的小段的数目。 接下来的 N 行,每行有一个 1 到 10000 之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。如果连 1cm 长的小段都切不出来,输出”0”。 输入样例:
3 7
232
124
456
输出样例:
114
程序:
#include <bits/stdc++.h> int n, k, len[10000]; int isok(int t) { int num = 0, i; for (i = 0; i < n; i++) { if (num >= k) break; num = 1 ; } if ( 2 ) return 1; else return 0; } int main( ) { int i, left, right, mid; scanf("%d%d", &n, &k); right = 0; for (i = 0; i < n; i++) { scanf("%d", &(len[i])); if (right < len[i]) right = len[i]; } right++; 3 ; while ( 4 < right) { mid = (left + right) / 2; if ( 5 ) right = mid; else left = mid; } printf ("%d\n", left); return 0; }