建筑设计难不难:abcd是一个四位的自然数,已知abcd - abc - ab - a =1995,求这个四位数。答案是2243。为什么?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 15:32:40

将这个式子化简
abcd-abc-ab-a=1995
即889a+89b+9c+d=1995
因为889*1和889*2均小于1995
即a可以取1或2
当a=1
89b+9c+d=1995-889=1106
而此时,若b,c,d均取最大值9
也就是89*9+9*9+9=891<1106
所以a不能取1
则a=2
那么
89b+9c+d=1995-889*2=217
所以b也可以去1或2(因为89*1和89*2均小于217)
可是当b取1时,9c+d=128
若b,c均取9也才9*9+9=90<128
所以b取2
那么
9c+d=39
所以c可以取1,2,3,4
因为d最大值为9,所以9c最小取30
但是c是自然数,所以c=4
故d=3
所以
abcd=2243

这样的题太简单了,奥林匹克竞赛经常有。用竖式方法计算。
a b c d
a b c
a b
a
----------
1 9 9 5
一看便知。

用计算机算啊,c语言忘的差不多了,下面可能有语法错误。
int a,b,c,d;
for (a=1;a<10;a++)
{for (b=1;b<10;b++)
{for (c=1;c<10;c++)
{for (d=1;d<10;d++)
{if a*1000+b*100+c*10 +d-a*100+b*10+c-a*10+b-a==1995
printf("hi,this is the end:" a,b,c,d); }
}}}

:浪迹天涯_2002 - 助理 二级 ( 151 ) 的方法 不错
①②③④
a b c d
 a b c
  a b
   a
---------
1 9 9 5
我在上边标上1234以便说明,先看3这一列最后得数是9那么1位数中9是最大的,所以只能是向前借了1位数才可以得到是9即:(10+)c-b-a=9
于是我们可以得到(10+)b-1-a=9(这是第2列)
再看2列得到9分明也是向前借位了
于是得到a-1=1→→a=2
这时回到第2列,(10+)b-1-2=9(b借了1位)那么b就只能是2了
得到了a=2和b=2之后,我们再写一下这个式子
①②③④
2 2 c d
 2 2 c
  2 2
   2
----------
1 9 9 5
第3列,(10+)c-2-2=9有可能c=3当然也有可能
c=4 (因为后边可能去借位)
如果c=3了,那么(10+)d-3-2-2=5是不是还得向前借位?
于是c≠3那么 c=4 这时
式子就变成了
①②③④
2 2 4 d
 2 2 4
  2 2
   2
---------
1 9 9 5
(10+)d-4-2-2=5
d=3
这样我们就得到了abcd是2243
于是
①②③④
2 2 4 3
 2 2 4
  2 2
   2
---------
1 9 9 5
好了,打完收工!