怎么破解数字迷

zhanglian1126 2009-07-08 11:39:02
破解
VINGT
CINQ
+ CINQ
TRENTE
规则:
1 不同的英文字母表示不同的数字
2 每一个数最左边不是0.
3 上面的题目是加,表示VINGT这个五位数与CINQ这个四位数的两倍相加后,回得到TRENTE这个六位数,并且数字的安排如谜语所表示。

能用递归做吗?
如果可以那怎么做?
...全文
1719 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
海底深鱼 2012-09-27
  • 打赏
  • 举报
回复
楼上的方法不能说错,但是运行时间太长,楼上的程序得运行几个小时。
liwenhua890212 2011-03-28
  • 打赏
  • 举报
回复
有那么难吗?
我只是告诉计算机怎么做就可以了。
#include<stdio.h>
void main()
{
int T,R,E,N,V,I,G,C,Q;
int a,b,c;

for(T=0;T<=9;T++)
for(R=0;R<=9;R++)
for(E=0;E<=9;E++)
for(N=0;N<=9;N++)
for(V=0;V<=9;V++)
for(I=0;I<=9;I++)
for(G=0;G<=9;G++)
for(C=0;C<=9;C++)
for(Q=0;Q<=9;Q++)
{
if(((T==R)||(T==E)||(T==N)||(T==V)||(T==I)||(T==G)||(T==C)||(T==Q))
||((R==E)||(R==N)||(R==V)||(R==I)||(R==G)||(R==C)||(R==Q))
||((E==N)||(E==V)||(E==I)||(E==G)||(E==C)||(E==Q))
||((N==V)||(N==I)||(N==G)||(N==C)||(N==Q))
||((V==I)||(V==G)||(V==C)||(V==Q))
||((I==G)||(I==C)||(I==Q))
||((G==C)||(G==Q))
||(C==Q))
continue;

a=V*10000+I*1000+N*100+G*10+T;
b=(C*1000+I*100+N*10+Q)*2;
c=T*100000+R*10000+E*1000+N*100+T*10+E;
if((a+b)==c)
{
printf(" %d %d %d %d %d\n",V,I,N,G,T);
printf(" %d %d %d %d\n",C,I,N,Q);
printf(" + %d %d %d %d\n",C,I,N,Q);
printf("-----------------------------\n");
printf(" %d %d %d %d %d %d\n",T,R,E,N,T,E);
}


}

}



ls的答案是正确的。
Fleeboy 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jindan_jinming 的回复:]
1.具体哪个字母代表哪个数字
因为数字只有10个(0~9),字母有26个,那剩下的16字母做什么?
具体的匹配原则是什么?
[/Quote]
楼主给出的式子中没有出现所有的字母,只有下面10个字母:
VINGTCQTRE
  • 打赏
  • 举报
回复
1.具体哪个字母代表哪个数字
因为数字只有10个(0~9),字母有26个,那剩下的16字母做什么?
具体的匹配原则是什么?
Walf_ghoul 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liao05050075 的回复:]
那个算式是固定的吗?也就是说,是不是总是A+B+B=C?

如果式子固定,那么也不难求。只需要不断为每个字母枚举不同数字,然后递归,如果到了某一步,发现下一步无法再进行,那么就回溯修改一下数字,再递归。
[/Quote]
能详细讲一下吗,按给的思路没太想明白。。
Walf_ghoul 2009-07-08
  • 打赏
  • 举报
回复
每个字母代表一个数字,将数字代入到式子中,使表达式成立即可,是这个意思吧。
liao05050075 2009-07-08
  • 打赏
  • 举报
回复
那个算式是固定的吗?也就是说,是不是总是A+B+B=C?

如果式子固定,那么也不难求。只需要不断为每个字母枚举不同数字,然后递归,如果到了某一步,发现下一步无法再进行,那么就回溯修改一下数字,再递归。
Fleeboy 2009-07-08
  • 打赏
  • 举报
回复
对,是唯一的,一直在等人回复,我不小心连续回了3个帖
[Quote=引用 22 楼 Fleeboy 的回复:]
以上是纯人脑推导过程,找了一组,下面就不推了,没想到一贴出来已经有了答案。
[/Quote]

Q = 8的情况等式不会成立,因此只有一组解:

94851
6483
6483
-------
107817

matrixcl 2009-07-08
  • 打赏
  • 举报
回复
代码验证,解是唯一的
matrixcl 2009-07-08
  • 打赏
  • 举报
回复
错误我发现了,修改在20楼。

比较佩服LS的纯人脑推理,我就推了几个数,后面太繁琐了,呵呵。正在研究ls的推理过程
Fleeboy 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 matrixcl 的回复:]
忘记说了,结果是这个

C/C++ code
/*
8 4 6 8 1
9 4 6 6
+ 9 4 6 6
--------------
1 0 3 6 1 3
*/




我只求了一组解,不排除有其他解的可能性
[/Quote]
这个结果是错误的
VINGT
CINQ
CINQ
-------
TRENTE

N和Q是不相等的
Fleeboy 2009-07-08
  • 打赏
  • 举报
回复
以上是纯人脑推导过程,找了一组,下面就不推了,没想到一贴出来已经有了答案。
Fleeboy 2009-07-08
  • 打赏
  • 举报
回复

VINGT
CINQ
CINQ
-------
TRENTE

Step 1:
V != 0
C != 0
T != 0
Q != 0
N != 0
I != 0

T = 1
-------
Step 2:
VING1
CINQ
CINQ
-------
1REN1E

(1 + 2Q)%10 = E (a)
E must be odd -> E = ?(3, 5, 7, 9) (b)
if E = 3 => Q = 1 X, becasue T = 1
if E = 5 => Q = 2, 7
if E = 7 => Q = 3, 8 (b1)
if E = 9 => Q = 4

(G + 2N)%10 = 1 -> G maybe odd
(G + 2N + 1)%10 = 1 -> G maybe even

(N + 2I)%10 = N -> I = 5 (c)
(N + 2I + 1)%10 = N -> should not exist
(N + 2I + 2)%10 = N -> I = 4

(I + 2C)%10 = E -> I maybe odd
(I + 2C + 1)%10 = E -> I maybe even


V = ?(8, 9)
R <= 1 -> R = 0 (d)
------------------------------------------------------------

Step 3:
VING1
CINQ
CINQ
-------
10EN1E

So V = 9, because (I + 2C + carry) < 20

Step 4:
9ING1
CINQ
CINQ
-------
10EN1E

(b) refined to: E = ?(5, 7) (e)

N + 2I carries, and the carry must be 1, becuase I = 4 or 5, and N >= 2 (0 and 1 is occupied by R and T respectively)

(I + 2C)%10 = E -> I maybe odd so, wrong here
(I + 2C + 1)%10 = E -> I maybe even => I = 4 (f)


Step 5:
94NG1
C4NQ
C4NQ
-------
10EN1E

(f) refined to: (5 + 2C)%10 = E?(5, 7) (g)
if E = 5 => C = 5, wrong, because E != C,
So, E = 7 (h)


Step 6:
94NG1
C4NQ
C4NQ
-------
107N17

(N + 8 + carry)%10 = N -> carry = 2, that means
G + 2N >= 20 or
G + 2N + carry' >= 20
according (b1), Q = ?(3, 8), (i)
so, 1 + 2Q < 20, that means carry' <= 1

10 <N + 4 + 4 + carry < 20
So,
4 + 2C + 1(carry) = 17 => C = 6
--------------------------------

Step 6:
94NG1
64NQ
64NQ
-------
107N17

according (i), given Q = 3 => G + 2N = 21 => (N = 8, G = 5)
94851
6483
6483
-------
107817

...found....
matrixcl 2009-07-08
  • 打赏
  • 举报
回复
16楼代码修改

bool TryNum(int num[], int index)
{
int i = 0;
for (i=0; i<10; i++)
{
if (!g_used[i])
{
num[index] = i;
g_used[i] = true;
if (index < 6)
{
if (TryNum(num, index+1))
return true;
}
else
{
if (JudgeResult(num))
return true;
}
g_used[i] = false;
}
}
return false;
}


/*
9 4 8 5 1
6 4 8 3
+ 6 4 8 3
--------------
1 0 7 8 1 7

*/

sayhorse 2009-07-08
  • 打赏
  • 举报
回复
94851
6483
6483
------
107817
matrixcl 2009-07-08
  • 打赏
  • 举报
回复
不好意思,有错误,再检查一下
matrixcl 2009-07-08
  • 打赏
  • 举报
回复
忘记说了,结果是这个

/*
8 4 6 8 1
9 4 6 6
+ 9 4 6 6
--------------
1 0 3 6 1 3
*/


我只求了一组解,不排除有其他解的可能性
matrixcl 2009-07-08
  • 打赏
  • 举报
回复

/*
V I N G T
C I N Q
+ C I N Q
--------------
T R E N T E

T = 1; //5为数加一个5位数(或更小的数)的和是6位数,很容易判断6位数首位是1
R = 0; //I+C+C的进位至多是2,V至多是9,因此R是0或1。1已用,R是0
V = 8/9;//这个判断条件在代码中没有用到。 I+C+C的进位至多是2,所以V至少是8
I = 4/9;//这个判断条件在代码中没有用到. 百位 (N+I+I+进位)%10 = N, I只可能是4、5、9。再看十位G+N+N结果十位是1,一次十位一定有进位,故I不可能是5


V I N G 1
C I N Q
+ C I N Q
--------------
1 0 E N 1 E
*/

//g_used[i] == false 代表数组中还没用i这个数字
bool g_used[10] = {true, true, false, false, false, false, false, false, false, false};

bool TryNum(int num[], int index);
void fun()
{
int num[7];//V, I, N, G, C, Q, E;
if (TryNum(num, 0))
{
printf("\n");
printf(" %d %d %d %d 1 \n", num[0], num[1], num[2], num[3]);
printf(" %d %d %d %d \n", num[4], num[1], num[2], num[5]);
printf("+ %d %d %d %d \n", num[4], num[1], num[2], num[5]);
printf("--------------\n");
printf(" 1 0 %d %d 1 %d \n", num[6], num[2], num[6]);
}
}
bool JudgeResult(const int num[])
{
int num1, num2, num3;
num1 = num[0] * 10000 + num[1] * 1000 + num[2] * 100 + num[3] * 10 + 1;
num2 = num[4] * 1000 + num[1] * 100 + num[2] * 10 + num[5];
num3 = 100010 + num[6] * 1001 + num[2] * 100;
return num3 == num1 + num2 * 2;
}
bool TryNum(int num[], int index)
{
int i = 0;
for (i=0; i<10; i++)
{
if (!g_used[i])
{
num[index] = i;
if (index < 6)
{
if (TryNum(num, index+1))
return true;
}
else
{
if (JudgeResult(num))
return true;
}
}
}
return false;
}
sayhorse 2009-07-08
  • 打赏
  • 举报
回复
int V,I,N,G,T,C,Q,R,E;
9个for循环取0~9的不同数字
判断VINGT + CINQ == TRENTE
满足条件就求出解了啊 啊~~~
Walf_ghoul 2009-07-08
  • 打赏
  • 举报
回复
来我们学校吧,方便食堂还开着呢。。。
加载更多回复(8)
相片救星(FaceFilter Studio)V 2.0 简体中文绿色破解版 软件简介: 相片救星2,该工具可方便地帮您添加和修改图中的面部表情和特征。FaceFilter Studio 相片救星2 可用于更改数字图像的面部特征,该程序操作简单、功能强大。FaceFilter Studio 相片救星2 可以编辑面部,使面部的结构更平衡,拥有更漂亮的眼睛和鼻子,更性感的嘴唇以及更人的微笑。您可以美化皮肤,消除红眼现象,也可以瞬间加亮图像中的面部肤色。您甚至可以为面部添加完全不同的表情。此外,您可以打印不同表情模板的无边框图像,与家人朋友们一起分享。您无需为了获得图片而等待好几天。当您编辑完毕,便可立即获得这些图片。 此软件应用程序以简便快捷的方式为您提供面部编辑功能。用户界面简单易懂,可通过顺序流程来完成面部的编辑。使用皮肤过滤您可编辑面部皮肤。丰富的模板库可为您提供各种表情。还可用同一软件编辑同一张图像上的多个面部。打印面部图像使拍照片更加有趣!! 软件已汉化完毕,因英文破解版只去除图片水印,本人只好亲自操刀去掉试用时间限制,但和1.0破解版一样能载入却不能保存比1024X768大的图片,只能替换成小图! 另外本人身边无打印机,是否可打印不得而知! 汉化借用了官方中文版本资源,所以汉化得比较完美,真正实现简体中文版, 欢迎试用! 本版将破解文件重新压缩,免除瑞星等杀毒软件的误报,让大家放心使用!
“文件密码箱”通过在磁盘上建立一个加密虚拟存储层——密码箱,实现文件的透明加密和安全隔离存储,并通过专门的虚拟文件系统对密码箱中内容进行管理。从外部看密码箱是一个数据文件,但输入密码打开密码箱后,里面就像一个独立的磁盘,可加密存储各类文件和文件夹,无需手动加解密,可像操作普通磁盘中文件一样直接操作密码箱中文件和文件夹,密码箱中文件始终处于加密状态。 密码箱中每个文件的加密算法为动态选择,除了加密,本软件还提供了反暴力破解、反星号密码提取、动态调试防御、密码攻击反制、密钥文件、软键盘输入、断电保护和自修复、源文件粉碎、入侵警报、登录审计、一键锁定与自动锁定、增量备份与自动镜像等防泄密反窃密创新技术,为您的数字资产提供全方位专业保护。 本软件还针对密码箱内的文件和文件夹提供了众多增强的文件管理功能,如书签、注释、模糊查找和快速检索、图片文件预览、密码箱内部隐藏文件夹、密码箱内部回收站、密码箱内部存储空间管理等。 本软件支持本地文件和文件夹加密、优盘移动加密、光盘归档加密、网盘文件加密等多种应用。 1、软件安装与卸载:本软件无需安装,解压后直接运行EncryptBox.exe程序即可使用。本软件无需卸载,不用时直接删除软件运行目录即可,但删除前要确保密码箱内文件已全部导出(否则会随数据文件一起被删除)。 2、同一电脑中允许使用多套文件密码箱,可通过复制文件密码箱软件的多个副本,启用多套密码箱。 3、将软件运行目录拷贝到优盘或移动硬盘,并在其上运行打开,可以实现移动加密。将软件目录刻录到光盘可以实现归档加密。可将文件密码箱存放在网盘中实现对网盘文件的加密。 4、密码不保存在密码箱中,无法用动态跟踪、反编译等办法截取,缺少密码作者本人亦无法解密,因此请一定牢记您的密码箱密码! 5、本软件适合加密各类数据文件,如各类文档资料、图纸方案、图片影音等,但在加解密大文件时需要一定时间(大概和拷贝该文件所需时间相当或略长一点)。 6、本软件曾获“首届互联网大赛”优秀奖,并被《电脑爱好者》、《电脑报》、《电脑》、《家用电脑》、《CHIP新电脑》等权威媒体多次推荐和介绍。 7、本软件为免费软件,无任何功能或使用时间上的限制。您可以分发此软件,但要保证所分发的软件包含全部文件,并且未作任何修改;您不能对此软件作任何的软件反向工程,如反汇编,跟踪等。 8、加密涉及源文件改变和磁盘读写,有一定风险,对于软件可能存在的尚未知的错误、操作过程中的异常情况、使用者密码忘记等造成的可能损失,软件作者不承担相关责任。一旦使用本软件请牢记密码、经常备份!

69,382

社区成员

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

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