启动器的一些定义:flip(n)是七段显示字体编号的180度旋转,因此一个2段的七段字体将翻转为2. 0,1,2,5,8将映射到自己.6 - > 9,9 - > 6和3,4,7未定义.因此,任何包含3,4,7的数字都不会被翻转.更多示例:flip(112)= 211,flip(168)= 891,flip(3112)=未定义.
(顺便说一下,我敢肯定,翻转(1)应该是不确定的,但功课说,翻转(168)= 891所以对此分配翻转(1)定义)
原始挑战:找到一个整数n> 0,它包含以下三个条件:
我们在下面找到的解决方案似乎有效,但至少在2011年找不到答案.如果我使用1991而不是(我搜索了一些问题可以解决的"基数")我得到了一个非常快速的回答说1515151就是那个.因此,基本概念似乎有效,但不适用于作业中给定的"基础".我在这里错过了什么吗?
用伪代码编写的解决方案(我们在Small Basic中有一个实现,我用Java编写了一个多线程):
for (i = 1; i < Integer.MaxValue; i++) {
n = i * 2011;
f = flip(n, true);
if (f != null && flip(n*n, false) != null) {
print n + " is the number";
return;
}
}
flip(n, symmetry) {
l = n.length;
l2 = (symmetry) ? ceil(l/2) : l;
f …Run Code Online (Sandbox Code Playgroud)