c语言求10的平方想家,求一道c语言习题,是数字相加的

问题描述:

求一道c语言习题,是数字相加的

给定一个表达式

ABCDE+ACEXD = MBBEEX

上述表达式为一个运算,是两个五位数相加,结果等于一个六位数

要求第一个五数中,出现的数字,要和第二个五位数中的数字相同

即例如 (只是假设)如果12345是第一个五位数,则135x4要是第二个五位数(x可以为任意数字)

但是结果中,要求结果(只是假设)是m2255x(m是任意数字,x与第二个五位数中的x相同)

求出所有满足条件的五位数和六位数

输出结果的格式是

ABCDE = .,ACEXD = .and BBEEX = .是一种组合

将所有组合全部输出

.

输出结果里的BBEEX 是 MBBEEX 写错了.

1个回答

分类:

综合

2014-11-07

问题解答:

我来补答

是否要求每个字母代表不同的数字?

再问: 要求ABCDE = ....., ACEXD = ..... and MBBEEX

就是,第一个数字的第1位要求等于第二个数字的第1位,

第一个数字的第2位,要求等于想家结果的2,3位的数字。。。

就是找这样的数。。。

再答: 单纯地循环会造成海量的运算,可以在编程前进行分析分析下数字关系:最高位M=1,A>5(否则就不可能加成六位数)个位:E+D=X,或E+D=X+10十位:D+X=E、D+X=E+10,,或D+X+1=E、D+X+1=E+10当个位为E+D=X+10时,由D+X+1=E、D+X+1=E+10可推出2D=9或2D=19,均不和题目要求。 所以E+D=X由 D+X=E 可推出 D=0,E=X,结合百位以上可得C=0,2A=B+10;由 D+X=E+10 可推出 D=5,E+5=X,结合百位以上可得C=9,2A=B+9.据此可编写程序。#include

void main()

{

long int x1,x2,x3;

long int a,b,c,d,e,x,m=1;

for (a=5;a<9;a++)

for (e=0;e<9;e++)

{ d=0;  //十位相加没进位

x=e;

c=0;

b=2*a-10;

x1=a*10000+b*1000+c*100+d*10+e;

x2=a*10000+c*1000+e*100+x*10+d;

x3=100000+b*10000+b*1000+e*100+e*10+x;

if (x1+x2==x3) printf("%ld + %ld = %ld\n",x1,x2,x3);

d=5;  //十位相加有进位

x=e+5; if(x>10) break;

c=9;

b=2*a-9;

x1=a*10000+b*1000+c*100+d*10+e;

x2=a*10000+c*1000+e*100+x*10+d;

x3=100000+b*10000+b*1000+e*100+e*10+x;

if (x1+x2==x3) printf("%ld + %ld = %ld\n",x1,x2,x3);

}

getch();

}

展开全文阅读

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值