(转)一个五位数字ABCDE*4=EDCBA
2012-08-26 12:55
357 查看
转自:http://kinghuimail.blog.163.com/blog/static/958204082010102784413898/
一道面试题:一个五位数字ABCDE*4=EDCBA,这五个数字不重复,请编程求出来(转)
2010-11-27 20:44:13| 分类: 学习笔记|字号 订阅一个五位数字ABCDE*4=EDCBA,这五个数字不重复,请编程求出来.
先给一个网友的纯的推理过程:
ABCDE*4=EDCBA
很显然,A不是1,就是2,为0就不是五位数,为> 2则乘积不会是五位数
因为4*E的个位数是A,则A=2
所以题目变成2BCDE*4=EDCB2
显然,E是8(原因,乘以4个位为2的只有3,8,而根据高位2*4> =8,它只能为8
所以变成2BCD8 * 4 = 8DCB2
既然BCD8*4没有进位,因此B只能是0,1,2
假设B=0,则CD8*4=DC02, 4*D的尾数必须为7,这肯定不可能
假设B=1,则1CD8*4 = DC12,4*D的个位数为8,D必然=7,因为1*4> 2
1C78*4=7C12 C*4 = 30+C-3, C=9,满足
假设B=2,则2CD8 * 4= DC22, D=8或者9,根据C等于4*D+3的个位,可以得出C等于5或者9
所以等式必须为2588 *4 或者2998*4,很显然都不满足
所以只能是(A,b,C,d,e)=(2,1,9,7,8)
下面给出一个遍历的C语言解法:
#include <stdio.h> int calc ()
{ for (int i=10001; i<100000; i++) { int right = 0; int left = i; while ( left != 0 ) /*求右边的值*/ { right = right * 10 + left % 10; left /= 10; } if ( (i << 2) == right ) { return i; } } return -1; } void main(void) { printf("the result is : %d\n", calc()); }
相关文章推荐
- 一个五位数字ABCDE*4=EDCBA,这五个数字不重复,求出这个五位数字
- 一个五位数字ABCDE*4=EDCBA,这五个数字不重复,请编程求出来.
- 一道面试题,一个五位数字ABCDE*4=EDCBA,这个五个数字不重复,请问A,B,C,D,E分别是几?
- 给一个不多于五位的正整数,要求: (1)求出他是几位数 (2)分别输出每位数字 (3)按逆序输出各位数字
- 古堡算式(福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA)
- 随笔:ABCDE*?=EDCBA 求A、B、C、D、E、?分别代表什么数字
- 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA
- 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA
- 五位数字全排列(生成一个五位数字,每位上的数字都不相同)
- 给出一个不多于五位的正整数,要求输出它的位数,每一位数字及逆序
- 3.2 设计一个程序,要求用户输入 5 个字符,然后将这 5 个字符按相反的顺序显示出 来。例如,假设输入 abcde,则输出为 edcba
- 你可以输入一个五位以内的数字,我们将判断,该数字是几位数,并且判断其是否为回文数
- 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA
- 输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。
- 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2<=n<=79
- 如何获取一个int型数字的位数
- 提取一个单元格中的文本(非数字)-自定义函数
- 将数字1-9分为三组,使每组构成一个3位数的平方数.
- 一个输入数字转化为大写的小程序(用到递归)(转)
- 一个数组arr,长度为N,N小于10^8,里面数字的范围是1~N,求每个数字出现的次数