一道做不明白了的编程题!!!!求助高手!!!!

shaderise 2006-08-30 11:11:01
给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E



我糊里糊涂写的代码,能编译可根本就无法运行
我也觉得代码写得很不对头~ 别取笑我啊 我是新手 T T

main()
{
int A, B, C, D, E, F, G, X, Y, Z;
E = (E + G + G) % 10;
D = ((D + F + F) % 10 + (E + G + G) / 10) % 10;
Z = ((C + D + D) % 10 + (D + F + F) % 10 + ((D + F + F) % 10 + (E + G + G) / 10) / 10 ) % 10;
Y = (B + ((C + D + D) % 10 + (D + F + F) % 10 + ((D + F + F) % 10 + (E + G + G) / 10) / 10) /10 ) %10;
X = (A + (B + ((C + D + D) % 10 + (D + F + F) % 10 + ((D + F + F) % 10 + (E + G + G) / 10) / 10) /10 ) /10) %10;
cout << A << B << C << D << E << endl;
cout <<" "<<" "<< D << F << G << endl;
cout <<"+"<<" "<< D << F << G << endl;
cout <<"-----"<<endl;
cout << X << Y << Z << D << E << endl;
return 0;
}
...全文
656 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
zixuan8083 2006-08-31
  • 打赏
  • 举报
回复
谁有本事 做作哥德巴猜想 赫赫
shaderise 2006-08-30
  • 打赏
  • 举报
回复
错了错了~~不符合题目啊~~“不同数字对应不同字母”~~还得用那个枚举的思路~~
shaderise 2006-08-30
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

void main()
{
int A = 1, B =2, C=3, D=2, E=4, F=6, G=7, V,W,X,Y,Z;
W = (E + G + G);
V = (D + F + F + W / 10);
Z = ((C + D + D) + V / 10);
Y = (B + Z / 10);
X = (A + Y / 10);
cout << A << B << C << D << E << endl;
cout <<" "<<" "<< D << F << G << endl;
cout <<"+"<<" "<< D << F << G << endl;
cout <<"-----"<<endl;
cout << X%10 << Y%10 << Z%10 << V%10 << W%10 << endl;
}

这个就可以了,短而且容易懂,谢谢!
aminconi的还没太搞明白 我再研究研究~
感谢大家!
EthanJiang0827 2006-08-30
  • 打赏
  • 举报
回复
不会阿!我这里好好的阿!
shaderise 2006-08-30
  • 打赏
  • 举报
回复
我不是这个意思~ 我写完代码都是Ctrl+F5执行的 所以不会出现那种问题
情况是 可以通过编译 但运行以后dos窗口下不显示任何结果..
EthanJiang0827 2006-08-30
  • 打赏
  • 举报
回复
你如果在编译器里面直接运行,那就getchar()等待输入,否则一闪而过的,或者直接在cmd里面执行这个exe就可以看到结果了阿!
EthanJiang0827 2006-08-30
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

void main()
{
int A = 1, B =2, C=3, D=2, E=4, F=6, G=7, V,W,X,Y,Z;
W = (E + G + G);
V = (D + F + F + W / 10);
Z = ((C + D + D) + V / 10);
Y = (B + Z / 10);
X = (A + Y / 10);
cout << A << B << C << D << E << endl;
cout <<" "<<" "<< D << F << G << endl;
cout <<"+"<<" "<< D << F << G << endl;
cout <<"-----"<<endl;
cout << X%10 << Y%10 << Z%10 << V%10 << W%10 << endl;
}

你是不是要这样的结果?
aminconi 2006-08-30
  • 打赏
  • 举报
回复
return 0前加getchar()试试

另外A和X的关系只能是A=X-1
shaderise 2006-08-30
  • 打赏
  • 举报
回复
感谢楼上的热心帮助!

编译仍然没有显示结果 还存在什么问题吗
aminconi 2006-08-30
  • 打赏
  • 举报
回复
其实有很多隐藏的约束条件可以减少循环次数
例如A,X是否可以为0
A=X或者A=X-1(A和X的关系只有这两种)
A=X时,算式为
B C D E
D F G
+ D F G
---------
Y Z D E

A=X-1时,算式为
B C D E
D F G
+ D F G
---------
1 Y Z D E
.......
剩下的楼主不妨自己分析一下
aminconi 2006-08-30
  • 打赏
  • 举报
回复
main()
{
int A,B,C,D,E,F,G,X,Y,Z;

for (A=0;A<10;A++) {
for (B=0;B<10;B++) {
for (C=0;C<10;C++) {
for (D=0;D<10;D++) {
for (E=0;E<10;E++) {
for (F=0;F<10;F++) {
for (G=0;G<10;G++) {
for (X=0;X<10;X++) {
for (Y=0;Y<10;Y++) {
for (Z=0;Z<10;Z++) {
if ((E = (E + G + G) % 10)
&& (D = ((D + F + F) % 10 + (E + G + G) / 10) % 10)
&& (Z = ((C + D + D) % 10 + (D + F + F) % 10 + ((D + F + F) % 10 + (E + G + G) / 10) / 10 ) % 10)
&& (Y = (B + ((C + D + D) % 10 + (D + F + F) % 10 + ((D + F + F) % 10 + (E + G + G) / 10) / 10) /10 ) %10)
&& (X = (A + (B + ((C + D + D) % 10 + (D + F + F) % 10 + ((D + F + F) % 10 + (E + G + G) / 10) / 10) /10 ) /10) %10)) {
cout << A << B << C << D << E << endl;
cout <<" "<<" "<< D << F << G << endl;
cout <<"+"<<" "<< D << F << G << endl;
cout <<"-----"<<endl;
cout << X << Y << Z << D << E << endl; }
}
}
}
}
}
}
}
}
}
}
return 0;
}
aminconi 2006-08-30
  • 打赏
  • 举报
回复
外面套嵌9个0到9的循环
然后用if进行判断
shaderise 2006-08-30
  • 打赏
  • 举报
回复
晕......反正就是右对齐

A B C D E
D F G
+ D F G
---------
X Y Z D E
shaderise 2006-08-30
  • 打赏
  • 举报
回复
A B C D E
. . D F G
+ . D F G
---------
X Y Z D E
shaderise 2006-08-30
  • 打赏
  • 举报
回复
不好意思 题目的格式有点乱了
A B C D E
D F G
+ D F G
---------
X Y Z D E
laiwusheng 2006-08-30
  • 打赏
  • 举报
回复
数学功底
universee 2006-08-30
  • 打赏
  • 举报
回复
mk
sea_zs 2006-08-30
  • 打赏
  • 举报
回复

呵呵是啊,我糊涂了,应该是
2 9 7 8 6
8 5 0
+ 8 5 0
---------
3 1 4 8 6
而且有唯一的答案,

总感觉这样的智力题应该答案唯一的,
抱歉,向aminconi(完美缺陷)道歉!
Woodman007 2006-08-30
  • 打赏
  • 举报
回复
sea_zs(子曰) 的答案有误:
39876 + 750 + 750 = 41376
39687+ 850 + 850 = 41387
没有考虑到十位的进位了

ABCDE
DFG
+ DFG
------
XYZDE

1. 看个位与十位:
DE + FG + FG = DE
可推出 FG = 50,十位向百位进1,
2. 因为B != Y,所以C + D + D一定进位1或2,如果进位1,那么Y就是0,与G = 0
冲突,所以进位2,Y = 1;因为A != X,所以B列进位1,X = A + 1,B = 9

整理; A9CDE+D50+D50 = X1ZDE,还有数字234678没有用到,X=A+1

3. 因为C + D + D + 1 一定进位2,以及,Z不能为0 与 1,
所以 22 <= C + D + D + 1 <= 7 + 8 + 8 +1 = 24,所以
C 与 D 只能在 6、7、8中选,A、X、Z只能在2、3、4中选,
因为X = A + 1,所以 A = 2、X = 3,Z = 4,C + D + D = 23
4. 如果 D = 6,则 C = 11,无效;
如果 D = 7,则 C = 9,冲突;
如果 D = 8, 则 C = 7,E = 6,唯一解。

29786 + 850 +850 = 31486
yzx1983 2006-08-30
  • 打赏
  • 举报
回复
楼上,你不考虑8+5+5的进位么?
加载更多回复(14)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧