打印本文 打印本文  关闭窗口 关闭窗口  
C趣味程序百例(20).减式还原
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:59:09  文章录入:杜斌  责任编辑:杜斌

63.减式还原
    编写程序求解下式中各字母所代表的数字,不同的字母代表不同的数字。
                    PEAR
                  -  ARA
                 --------
                     PEA
*问题分析与算法设计
    类似的问题从计算机算法的角度来说是比较简单的,可以采用最常见的穷举方法解决。程序中采用循环穷举每个字母所可能代表的数字,然后将字母代表的数字转换为相应的整数,代入算式后验证算式是否成立即可解决问题。
*程序与程序注释
#include<stdio.h>
void main()
{
   int p,e,a,r;
   for(p=1;p<=9;p++)          /*从1到9穷举字母p的全部可能取值*/
      for(e=0;e<=9;e++)      /*从0到穷举字母e的全部可能取值*/
         if(p!=e)            /*p不等于e*/         
            for(a=1;a<=9;a++)    /*从0到9穷举字母a的全部可能取值*/
               if(a!=p&&a!=e)    
                  for(r=0;r<=9;r++)    /*从0到9穷举字母r的全部可能取值*/
                     if(r!=p&&r!=e&&r!=a&&p*1000+e*100+a*10+r-(a*100+r*10+a)
                                       ==p*100+e*10+a)
                     {
                        printf("   PEAR   %d%d%d%d\n",p,e,a,r);
                        printf("  -ARA -   %d%d%d\n",a,r,a);
                        printf(".........................\n");
                        printf("   PEA   %d%d%d\n",p,e,a);
                     }
}
*运行结果
            PEAR            1098
         -   ARA          -  989
        ----------         ------
             PEA             109

*思考题
   请复原下面的和式。不同的字母代表不同的数字。


      SEVEN                  82524            82526
      THREE                  19722            19722
   +    TWO     答案:   +     106         +    104
  ----------            -----------      -----------
     TWELVE                 102352           102352
打印本文 打印本文  关闭窗口 关闭窗口