读书人

关于一个腾讯面试题的解法,该如何处理

发布时间: 2013-08-26 12:17:40 作者: rapoo

关于一个腾讯面试题的解法
本帖最后由 mycsdf 于 2013-08-18 10:46:58 编辑 不知道在某个地方看到的,有一道腾讯面试题是这样的:

试求出 所有 ABCD*4 = DCBA的数?

我的思路是先把ABCD逆转为DCBA的形式,
可以考虑用递归或是栈的方式,这里我选用递归进行。。
然后,再做一个循环判断,输出结果。

但是总觉得下面那个for循环效率太低,不知道应该怎样改进一下。。。。。


void reverseNum( int n, int &b )
{
b = b + n%10;
if ( n > 9 )
{ b = b*10;
reverseNum(n/10, b);
}
}

void getNum()
{
for( int i = 1000; i < 2500; i ++ )
{ int b = 0;//每次都要把b初始化为0.
reverseNum( i, b );
if( i*4 == b )
printf("%d * %d = %d\n",i,4,b);
}
}
面试题 递归 C++/C
[解决办法]
....这题唯一解把?不是考编程是考数学...
a为偶数,且小于3,因此a=2,d=8,同理b为奇数,b小于3,b=1,解得c=7
[解决办法]
4层循环枚举一下会不会更快一点呢,乘法比除法要快一些。
[解决办法]
可以试试按照人的思路,解题,看看是穷举法快,还是推理法快!

读书人网 >C++

热点推荐