将一根长为 ncm 的钢管截成长为 69cm 和 39cm 两种规格的短料。在这两种规格的短料至少各截一根的前提下, 如何截才能余料最少?
如果n<108cm,输出“error”。
输入:
369
输出:
3 4 6// 69cm 的 3 根,39cm 的 4 根,余料的长度为 6 cm。
#include <stdio.h>
#include <stdlib.h>
const int MAXN = 100;
int c,rest,a[MAXN],minrest,a39,a69;
void input_data()
{
scanf("%d",&c);
if (c < 108)
{
printf("error");
exit(0);
}
rest = c - 108;
minrest = rest;
a[39] = 1;a[69] = 1;
a39 = 1;a69 = 1;
}
void sear_ch(int t)
{
a[t]++;
rest-=t;
if (rest < minrest)
{
minrest = rest;
a39 = a[39];a69 = a[69];
}
if (rest >= 69)
sear_ch(69);
if (rest >=39)
sear_ch(39);
rest+=t;
a[t]--;
}
void get_ans()
{
if (rest >= 69)
sear_ch(69);
if (rest >=39)
sear_ch(39);
}
void output_ans()
{
printf("%d\n",a69);
printf("%d\n",a39);
printf("%d\n",minrest);
}
int main()
{
input_data();
get_ans();
output_ans();
return 0;
}