
程序代码:
1.看题的输入:
输入
数据有多行,每行三个整数,分别是L,a,b;
就可以写出
#include <stdio.h>
int main() {
int L, a, b;
while(scanf("%d %d %d", &L, &a, &b) != EOF) {
}
return 0;
}
2.看题的输出
输出
每行输出截出a长度和截出b长度材料的根数,结果有多个时,只输出总根数最少或最长材料根数最少的数据。
先不分析这句话
#include <stdio.h>
int main() {
int L, a, b, n, m;
while(scanf("%d %d %d", &L, &a, &b) != EOF) {
printf("%d %d\n", n, m);
}
return 0;
}
然后分析这句话:结果有多个时,只输出总根数最少或最长材料根数最少的数据。
先不分析这句话
最多的情况是L / 2,并且任何>2的数都可以由2和3组成,所以只需要小于L/2就可以了
且总长度=长2的*根数+长3的*根数
即
#include <stdio.h>
int main() {
int L, a, b, n, m, t;
while(scanf("%d %d %d", &L, &a, &b) != EOF) {
t = L / 2;
if(n * a + m * b == L && n + m < t)
printf("%d %d\n", n, m);
}
return 0;
}
好了,这里就只要解决根数的问题了
我运用的是用两个for语句给根数限定范围....直到计算机找到符合所有条件的根数
#include <stdio.h>
#define M 1000+10
int main() {
int L, a, b, n, m, t;
while(scanf("%d %d %d", &L, &a, &b) != EOF) {
t = L / 2;
for(n = 0; n < M; n++)
for(m = 0; m < M; m++)
if(n * a + m * b == L && n + m < t)
printf("%d %d\n", n, m);
}
return 0;
}
不知道讲得怎么样,见笑了.....