题目:$\textsf{\textcolor{#F39C11}{P1207 [USACO1.2] 双重回文数 Dual Palindromes}}$。
提交记录:
- 错误记录:R237916391。
错误原因:在 for 循环内进行 if。
涉事代码片段:
while (n)
{
for (int b = 2, pal = 0; b <= 10; b++)
if (pal >= 2) { cout << i << "\n", n--; break; }
else if (ifpal(base(i, b))) pal++;
i++;
}
当 $b = 10$ 时若 $pal = 1$ 且十进制下这个数 是回文数,for 循环直接结束了从而漏掉这个数字。
解决:不写 else。
while (n)
{
for (int b = 2, pal = 0; b <= 10; b++)
{
if (ifpal(base(i, b))) pal++;
if (pal >= 2) { cout << i << "\n", n--; break; }
}
i++;
}