Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538812
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-04-06 08:31:57

    求一个不相等的四位数乘以一个数,等于该数的倒序值。
    求此题,需要使用枚举进行操作。四位数互不相等,另外需要使用程序求出该四位数的倒序值。根据此两点,进行如下程序的编写:
  1. #include <stdio.h>

  2. int reverse(int i)
  3. {
  4.   int result = 0;
  5.   while(i)
  6.   {
  7.     result = result*10 + i%10;
  8.     i = i/10;
  9.   }

  10.   return result;
  11. }

  12. int fun(int i, int j)
  13. {
  14.   int buf[4], k=0;
  15.   while(i)
  16.   {
  17.     buf[k] = i%10;
  18.     i = i/10;
  19.     k++;
  20.   }
  21.   
  22.   if(buf[0] == buf[1]) return 0;
  23.   if(buf[0] == buf[2]) return 0;
  24.   if(buf[0] == buf[3]) return 0;
  25.   if(buf[1] == buf[2]) return 0;
  26.   if(buf[1] == buf[3]) return 0;
  27.   if(buf[2] == buf[3]) return 0;
  28.   if(buf[0] == j) return 0;
  29.   if(buf[1] == j) return 0;
  30.   if(buf[2] == j) return 0;
  31.   if(buf[3] == j) return 0;

  32.   return 1;
  33. }

  34. int main(int argc, char *argv[])
  35. {
  36.   int i,j;
  37.   for(i=1000; i<10000; i++)
  38.     for(j=1; j<10; j++)
  39.       if(i*j == reverse(i) && fun(i,j))
  40.       {
  41.         printf("%d\n",i);
  42.         printf("* %d\n",j);
  43.         printf("---------\n");
  44.         printf("%d\n",i*j);
  45.       }

  46.   return 0;
  47. }
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
2178
*      4
---------
8712

阅读(899) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~