| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:C语言实验题——最节省材料
只看楼主 加入收藏
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
结帖率:66.67%
收藏
 问题点数:0 回复次数:12 
C语言实验题——最节省材料
描述

一个长度为L米的材料,需要截成长度为a米和b米的短材料,求两种短材料各截多少根时,剩余的材料最少。

输入

数据有多行,每行三个整数,分别是L,a,b;

输出


每行输出截出a长度和截出b长度材料的根数,结果有多个时,只输出总根数最少或最长材料根数最少的数据。


样例输入


10 2 3

样例输出


2 2
搜索更多相关主题的帖子: C语言 
2013-02-23 16:40
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
看上去蛮简单的...试下

仰望星空...........不忘初心!
2013-02-23 16:54
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
程序代码:
#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;
}
写好了,用了时间还是太多了吧

仰望星空...........不忘初心!
2013-02-23 17:08
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
15分钟

仰望星空...........不忘初心!
2013-02-23 17:08
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
收藏
得分:0 
大哥,能为小弟解释一下,谢谢了。
2013-02-24 12:12
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
好吧,我就跟你解释一下....

仰望星空...........不忘初心!
2013-02-24 12:22
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
程序代码:
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;
}


不知道讲得怎么样,见笑了.....





仰望星空...........不忘初心!
2013-02-24 12:44
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
收藏
得分:0 
谢谢大哥指导
2013-02-24 12:45
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
把分给我就好了....哈哈

仰望星空...........不忘初心!
2013-02-24 12:46
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
收藏
得分:0 
大哥  我注册不久,没有什么分,在吗
我还有一些想求你帮忙。
那个同构数问题。(为我讲一下思路),谢谢。

所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[x,y]之间所有同构数之和。x,y由键盘输入。

输入样例:

2 1000

输出样例:

1113

 

2013-02-24 13:32
快速回复:C语言实验题——最节省材料
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047139 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved