1001-I Count Two Three
预处理所有型如2^a 3^b 5^c 7^d的数字即可,在1e9的数据范围内共有5194个,且1e9正好为最后一个2^a 3^b 5^c 7^d数,排序后二分查找即可。
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int inf = 1e9;
long long list2[31] = {
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824};
long long list3[20] = {
1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683, 59049, 177147, 531441, 1594323, 4782969, 14348907, 43046721, 129140163, 387420489,