一道abc+cba=1333的问题

来源:互联网 发布:2×2矩阵张量积 编辑:程序博客网 时间:2024/05/29 19:52

前两天被华为的鄙视了一下,因为临时出了一道abc+cba=1333的问题,当时由于什么都没有准备,结果就给他一个3个for循环的结果,其实当时也觉得这个不合适,简答分析了一下,a和c肯定不能等于0,因为这样结果肯定达不到1333,后来又对这个问题做了简单的分析:

1333这个数字其实是比较特别的,什么情况下才有可能得出结尾是3的数字?

4+9=13,5+8=13,6+7=13,7+6=13,8+5=13,9+4=13

也就是说其实只有a和c的值相加等于13的情况下才可能等于1333,这样又可以得出下一个结论:

既然a+c=13,那么100*a+100*c等于多少,显然是1300,这样又可以得到如下:

abc+cba=100*a+100*c+a+c+20*b=1333,不难算出b的值肯定等于1,由此可以对程序做出如下优化:

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>
  2. int print(void);
  3. int main(){
  4. print();
  5. return 0;
  6. }
  7. int print(){
  8. int a, b, c;
  9. for(a=4; a<10; a++){
  10. c = 13 - a;
  11. b = 1;
  12. int tmp = 101*a+20*b+101*c;
  13. if(tmp == 1333){
  14. printf("a=%d,b=%d,c=%d\n", a, b, c);
  15. }
  16. }
  17. return 0;
  18. }


得到如下结果:

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. ./test
  2. a=4,b=1,c=9
  3. a=5,b=1,c=8
  4. a=6,b=1,c=7
  5. a=7,b=1,c=6
  6. a=8,b=1,c=5
  7. a=9,b=1,c=4


有兴趣的同学可以使用三个for循环看下得到的结果是否一致

 

我觉得很有意思的一道题

原创粉丝点击