B3756 [信息与未来 2021] 幸运数字
欢迎报名洛谷网校,期待和大家一起进步!
本题考察枚举和进制转换。
本题要求将数字转化为
- 求出
x 除以5 的余数q ; - 将
x 除以5 ,得到的结果向下取整; - 如果
x>0 ,则回到第一步; - 将得到的余数倒序排列,所得的结果就是
x 转换成5 进制的结果;
因此,一个正整数在
因此,我们可以编写一个函数 bool check(int x, int base),表示正整数 true,则说明不含有;返回值为 false,则说明含有。
bool check(int x, int base) {
while (x) {
if (x % base == 0)
return false;
x /= base;
}
return true;
}
接着在主程序中,只用将枚举的 check 函数三次,即可得到答案:
for (int i = a; i <= b; i++) {
if (check(i, 5) && check(i, 7) && check(i, 9))
ans++;
}