密码难题
Cryptarithmetic puzzle
我正试图解决这个密码算术难题TWO+TWO=FOUR,我使用了原始的蛮力,但我不知道我在哪里犯了错误。这里的想法是,它尝试从0到10的所有可能的数字组合,并且分配给字符的所有数字都必须是不同的。根据的定义
密码算术谜题是一种数学游戏有些数字是用字母(或符号)表示的。每个字母表示一个唯一的数字。目标是找到这样的数字验证了给定的数学方程:在这种情况下:
TWO
+ TWO
------
= FOUR
此代码遍历所有可能的组合,直到找到满足问题的解决方案。else if
语句中给出了它的约束条件。第一个if
语句只是简单地检查数字是否相同,如果是,则跳过该迭代。
我想要的输出是查看所有正确的解决方案。
int T, W, O, F, U, R;
for (T = 0; T < 10; T++)
{
for (W = 0; W < 10; W++)
{
for (O = 0; O < 10; O++)
{
for (F = 0; F < 10; F++)
{
for (U = 0; U < 10; U++)
{
for (R = 0; R < 10; R++)
{
if ((T == W) || (T == O) || (T == F) || (T == U) || (T == R) || (W == O) || (W == F) || (W == U) || (W == R) || (O == F) || (O == U) || (O == R) || (F == U) || (F == R) || (U == R))
{
continue;
}
else if (200 * T + 20 * W + 2 * O == F * 1000 + O * 100 + U * 10 + R * 0) {
cout << "T = " << T << endl
<< "W = " << W << endl
<< "O = " << O << endl
<< "F = " << F << endl
<< "U = " << U << endl
<< "R = " << R << endl << endl;
break;
}
}
}
}
}
}
}
我得到了一堆结果,有趣的是,只有最后一个结果是好的,它给出了:
T = 7
W = 6
O = 5
F = 1
U = 3
R = 0
R * 0
应为R * 1
。
你得到的答案恰好是R = 0
(因为当R
是0
时,R * 0
与R * 1
相同)。我想您还想从1
开始F
,因为通常密码算法不允许前导零。
相关文章:
- c++中的oop(密码生成)
- 密码登录程序将永远循环并显示不正确的结果
- OpenSSL没有共享密码
- Cryptopp:获取密码输入的填充字符串
- 密码长度验证 (c++)
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 仿射密码解密,输出大小写不同
- 替换密码:哪一个?
- 无法使用 openssl 服务器,因为密码已过时...什么的...ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- 如何使用 c++ 在 sqlite3 中打开受密码保护的数据库?
- 根据用户名和密码 Qt C++重新访问数据库值
- C++密码问题
- 无法在 Cocos2dx 中使用受密码保护的 zip 文件
- 如何使用librdkafka设置明文协议(无SASL)的用户名和密码?
- 如何将凯撒密码的元素从字符串更改为字符串
- 解决难题(最佳解决方案)
- 如何在C++的凯撒密码程序中包含空格?
- 运行密钥密码解密知道密钥?
- 如何在 c++ 中将密码和用户名保存到 .txt 文件中.如果用户尝试登录,我仍然希望能够检索它们
- 密码难题