标题:买小猫小狗,OJ上显示25%的错误
取消只看楼主
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
结帖率:86%
已结贴  问题点数:20 回复次数:6 
买小猫小狗,OJ上显示25%的错误
题目:某动物饲养中心用X元专款购买小狗(每只A元)和小猫(每只B元)两种小动物。 要求专款专用,(至少猫狗各一),正好用完?请求出方案的总数。如没有请输出0.
输入
输入一行,只有三个整数.分别为X,A,B. ( 100 < X < 32768; 1 <= A, B <= 100 )
输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
样例输入
1700 31 21
样例输出
3
代码如下:
程序代码:
#include<stdio.h>
int main()
{
    int a,b,i,j,count=0;
    long int x; //i 小猫 j小狗 
    scanf("%ld%d%d",&x,&a,&b);
    for(i=1;i<=100;i++){
        for(j=1;j<=100;j++){
            
            if((i*a+b*j==x)&&(i>=1)&&(j>=1))
                count++;
            else
                continue;
        }
    }
    printf("%d\n",count);
    return 0;
}

样例输入输出正确,但我觉得还是少考虑些条件,能力有限,请各位指点一下^_^
搜索更多相关主题的帖子: 动物 小狗 color 小猫 count 
2016-04-11 19:29
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
得分:0 
回复 5楼 lin5161678
谢谢!有些事我多虑了,“可以试试把 i*a+b*j 改为 i*a+b*j*1L ”,这句话我不理解,因为我在编译器上运行时错的。而且我觉得x的输入范围属于int类型的啊

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-04-11 21:56
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
得分:0 
回复 7楼 alice_usnet
谢谢,您的程序的基本语法和结构都没问题,但我刚运行了下,样例输出是0啊! 是不是哪地方逻辑出问题了

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-04-13 17:40
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
得分:0 
回复 9楼 lin5161678
您的解释我明白了,就是扩大了变量的取值范围,但我想这道题用int 类型应该就可以了吧,都在范围内呢,不过我还是按照您的提示把程序修改了下,刚在OJ上运行,还是没过,停留在25%的答案那。  想不到哪里没考虑到...
代码如下
程序代码:
#include<stdio.h>
int main()
{
    int a,b,i,j,count=0;
    long int x; //i 小猫 j小狗 
    scanf("%ld%d%d",&x,&a,&b);
    for(i=1;i<=100;i++){
        for(j=1;j<=100;j++){
            
            if(1L * i * a + 1L * b * j==x)
                count++;
        }
    }
    printf("%d\n",count);
    return 0;
}

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-04-13 17:46
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
得分:0 
回复 14楼 未来大仙
那意思就是可以用一个for循环先枚举狗,然后用剩余的钱去除以猫的价格,如果能除尽,就输出,不能就继续枚举,对吧

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-04-14 22:10
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
得分:0 
回复 12楼 lin5161678
好的  http://oj.  (一个小oj)

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-04-14 22:11
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
得分:0 
回复 18楼 lin5161678
谢谢!我明白了,如果用两个for循环,有可能造成count的数值超出我所设定的int范围,而用一个for循环枚举可以完美的解决这个问题,这是我的理解。

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-04-15 11:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463531-1-1.html




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

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