回 帖 发 新 帖 刷新版面

主题:求教一个简单的题

这是一道奥林匹克数学题,小弟实在解不出来,才想到编程解:
1,2,3,4,5,6,7,8,9九个数字,用一个4位数乘一个1位数,等于一个4位数,要分别且只能用这九个数字各一次.求教一下了,还能提供一个算法啊,谢谢了!

回复列表 (共9个回复)

沙发

main()
int x,a,b,c,d,e,f,g,h,i,sum;
for(x=1000;x<10000;x++)
{for(e=0;e<10;e++)
{sum=x*e;
x=a*1000+b*100+c*10+d;
  sum=f*1000+g*100+h*10*i;
if(a!=b!=c!=d!=e!=f!=g!=h!=i&&sum<10000&&0<=a<10&&0<=b<10&&0<=c<10&&0<=d<10&&0<=e<10&&0<=f<10&&0<=g<10&&0<=h<10&&0<=<10&&)            /*让A到I分别不相等并让他们的值在0到10*/
printf("这个四位数是=%d",x);
printf("这个乘数是=%d",e);
printf("乘积的结果=%d",sum);
}
}
我编的有点笨吧,我认为还很多东西可以简化,我的QQ是172027141我也是菜鸟,我没有运行不知道正确不正确哦!

板凳

改一下有个错误
main()
int x,a,b,c,d,e,f,g,h,i,sum;
for(x=1000;x<10000;x++)
{for(e=0;e<10;e++)
{sum=x*e;
x=a*1000+b*100+c*10+d;
  sum=f*1000+g*100+h*10*i;
if(a!=b!=c!=d!=e!=f!=g!=h!=i&&sum<10000&&0<=a<10&&0<=b<10&&0<=c<10&&0<=d<10&&0<=e<10&&0<=f<10&&0<=g<10&&0<=h<10&&0<=<10&&)            /*让A到I分别不相等并让他们的值在0到10*/
{printf("这个四位数是=%d",x);
printf("这个乘数是=%d",e);
printf("乘积的结果=%d",sum);}
}
}

3 楼

大家都来看看吧,有什么错误指点一下谢谢

4 楼

main()
int x,a,b,c,d,e,f,g,h,i,sum;
for(x=1000;x<10000;x++)
{for(e=0;e<10;e++)
{sum=x*e;
if(sum<10000&&0<=a<10&&0<=b<10&&0<=c<10&&0<=d<10&&0<=e<10&&0<=f<10&&0<=g<10&&0<=h<10&&0<=<10&&)
{
a*1000+b*100+c*10+d=x;
f*1000+g*100+h*10*i=sum;
}
if(a!=b!=c!=d!=e!=f!=g!=h!=i)              /*让A到I分别不相等并让他们的值在0到10*/
{printf("这个四位数是=%d",x);
printf("这个乘数是=%d",e);
printf("乘积的结果=%d",sum);}
}
}

5 楼

3xxx*2=XXXX
4xxx*2=XXXX
2xxx*3=xxxx
2xxx*4=xxxx
只有这几种情况

6 楼

for i =1 to 9
  for j=1 to 9  
    for k=1 to 9
      for t=1 to 9
        if i<>j and i<>k and i<>t and j<>k and j<>t and k<>t then
           for q=1 to 9    
              if i<>j and i<>k and i<>t and i<>q  and j<>k and j<>t                  and j<>q and k<>t and k<>q and t<>q then
               p=(i*1000+j*100+k*10+t)*q
             end if
             if p>=1000 and p<=9999 then print p
           next q
      next t
    next k
  next j
next i
end

7 楼

前面那位同志有个很明显的错误,
  sum<10000&&0<=a<10&&0<=b<10&&0<=c<10&&0<=d<10&&0<=e<10&&0<=f<10&&0<=g<10&&0<=h<10&&0<=<10&&)

在C语言中,不能写成a<b<c,只能写成a<b&&b<c

8 楼

被乘数尾数不为1、5

9 楼

*********外企高级软件工程师培训与实践*******

    你想在短期之内成为软件编程高手嘛?你想参与正规的软件技术培训与实
践嘛? 你若是大学生,毕业后想找到合适的工作吗?你想在技术上领先别人
一步吗?现在大学毕业生越来越多,找工作越来越难。
    我在软件行业打拼了5年,按我总结的经验很多软件公司都需要人才,
需要有实际本领的软件人才,但是往往找不到合适的人。他们需求的与我们
平时学到的东西差距很大。就是所谓的教育与成产脱离。
    我们在宁波开设了外企高级软件工程师班,利用半年的时间进行魔鬼般
的训练打造 一批软件精英。我们手把手教你关键软件技术,带领你做大型软
件项目。详细讲解软件领域 的各方面的技术。其中有国内项目相关的软件技
术,也有外包软件技术及外企软件技术。
    我们还针对已经参加工作的,对电脑软件,数据库技术等有爱好的朋友开设
了周末学习提高班。

我们的许诺:
1。个人的努力加上老师的指导,可以学到实际需要的软件技术。
2。学习班毕业后颁发证书,技术能力等级证书。
3。不耽误正常的学习生活。  
4。学习效果不满意,学费全部退还。
5。经济困难的学员,公司提供工作岗位,以减轻经济负担.
6。学习效果不满意,学费全部退还。
7。经济困难的学员可以减免部分学费。

主要内容:
1。oralce数据技术
2。sqlserver数据库技术
3。.net原理
4。c#语言
5。asp.net网页编程
6。软件开发设计技术

参加外企高级软件工程师班的每个学员都签订培训协议,有法律效益。
当你毕业的时候,你又有实际大型软件项目经验,又有扎实系统的软件
技术。一定可以领先别人一步,工作会得心应手。

有兴趣的朋友可以联系:

吉日 先生
培训地点:宁波市鄞洲区堇山中路(半岛名邸,杉杉集团对面,正在进行简单装修)
外地培训人员可提供住宿,周末班交通不便可提供住宿。
QQ:252056973
MSN:jirigala_bao@hotmail.com
电话:13819804404

我来回复

您尚未登录,请登录后再回复。点此登录或注册