例如,我希望在不转换字符串的情况下找到包括2,7到1到7000的数字。 2 7 12 17 ... 20 21 22 23 ... 7000 数学有一个很好的算法吗? 提前谢谢你......
答案 0 :(得分:3)
像这样的东西
while ( n > 0 ) {
digit = n % 10;
// check the digit
n = n / 10;
}
523的例子
答案 1 :(得分:2)
考虑一下,如果你将Matteo的代码放在一个循环上,它就可以了。 顺便说一句,你可以提高性能,跳过明显的数字。
例如,如果您在第三位数字上找到7,如15783,则可以跳过所有127XX(它们都是有效的!),您可以转到15800
您也可以直接构建它们。从1到7000他们是:
xxx2 xxx7
xx2x xx7x
x2xx x7xx
2xxx 7000
用0-9位替换x
。 (照顾xxx2 = xx7x为0072或0172重叠......)
编辑:
提示:您不需要字符串来执行此操作。 1332 == 1 * 10 ^ 3 + 3 * 10 ^ 2 + 3 * 10 ^ 1 + 2 * 10 ^ 0