zoukankan      html  css  js  c++  java
  • 100c之21:4位反序数

    100c之21:4位反序数

    100c之21:4位反序数

    Table of Contents

    1 问题

    设n是一个四位数,它的9倍恰好是其反序数。反序数就是将整数的数字倒过来形成的整数,比如1234的反序数是4321

    2 分析

    穷举法,穷举范围从1000到1111即可。因为大于1111的四位数乘以九得到的是个五位数,所以最大的穷举数为1111,另外从1000到1111尾数为0的不用考虑

    3 解决方案

     1:  /**
     2:   * @file   021fourdigitinversal.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Tue May 21 18:44:31 2013
     5:   * 
     6:   * @brief  设n是一个四位数,它的9倍恰好是其反序数。反序数就是将整数的数字倒过来形成的整数,比如1234的反序数是4321
     7:   * 
     8:   * 
     9:   */
    10:  
    11:  #include <stdio.h>
    12:  
    13:  int main(int argc, char *argv[])
    14:  {
    15:    int n;
    16:    for (n=1000; n <=1111; ++n)
    17:      {
    18:        if (0 == n%10 ) continue;
    19:        else if (n*9 == ((n%10) * 1000 + ((n/10)%10) *100 + ((n/100)%10)*10 + n/1000) )
    20:          {
    21:            printf ("the inverse number of %d is %d\n",n, n*9);
    22:          }
    23:      }
    24:    return 0;
    25:  }
    

    发现if的判断过程计算步骤太多,可以采用注意计算四个数字的方法诸位对比,只要一位对比补上就不用再比较下去,这样可以减少计算次数。于是,对程序的一点改进。

     1:  /**
     2:   * @file   021fourdigitinversal.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Tue May 21 18:44:31 2013
     5:   * 
     6:   * @brief  设n是一个四位数,它的9倍恰好是其反序数。反序数就是将整数的数字倒过来形成的整数,比如1234的反序数是4321
     7:   * 
     8:   * 
     9:   */
    10:  
    11:  #include <stdio.h>
    12:  
    13:  int main(int argc, char *argv[])
    14:  {
    15:    int n;
    16:    for (n=1000; n <=1111; ++n)
    17:      {
    18:        if (0 == n%10 ) continue;
    19:        else if ( n/1000 == n*9%10 && n/100%10 == n*9/10%10 && n/10%10 == n*9/100%10 && n%10 == n*9/1000 )
    20:          {
    21:            printf ("the inverse number of %d is %d\n",n, n*9);
    22:          }
    23:      }
    24:    return 0;
    25:  }
    

    Date: 2013-05-21 18:54

    Author: emacsun

    Org version 7.8.02 with Emacs version 23

    Validate XHTML 1.0
  • 相关阅读:
    图书排列
    L1-059 敲笨钟 (20 分)
    区间移位
    取球博弈
    poj 2456 Aggressive cows
    对局匹配
    发现环
    数字划分
    哥德巴赫分解
    把数组排成最小的数
  • 原文地址:https://www.cnblogs.com/chaolong/p/3091297.html
Copyright © 2011-2022 走看看