int tmp=1;
while (n>=tmp) {
int num = n - tmp;
if (num % b == 0) {
cout << "Yes" << endl;
break;
}
tmp *= a;
}
768093662 48 46 错误数据,
由于n比较大,tmp在最后一次乘以a时会超过int范围,变成负数,进而陷入死循环。这个和详细解释里示例一中变量len的溢出类似。
开ll就可以解决这个问题,并成功ac。
例题
ll取模运算用时比int用时长,有时会卡,需注意。
无脑ll就完了。