Skip to content

Latest commit

 

History

History
38 lines (31 loc) · 1.2 KB

1933C.md

File metadata and controls

38 lines (31 loc) · 1.2 KB

C. Turtle Fingers: Count the Values of k

Link

Solution

一道通过分析数据范围来求解的题,看起来循环套循环复杂度会很猛,但实际上简单一分析会发现20*20的循环就能满足1e6的数据,于是就来到了我最喜欢的六个字:直接暴力即可!

要注意某些会出现重复k的情况,所以需要搞个set去重,虽然看起来实在有点儿丑,但题解它也是这么用的。

Code

#define LL long long

int main()
{
    int t;
    std::cin >> t;
    std::unordered_set<int> ans;
    while (t--) {
        ans.clear();
        LL a, b, l;
        std::cin >> a >> b >> l;
        LL tmpa = 1;
        for (size_t i = 0; i <= 20; i++) {
            LL tmpb = 1;
            for (size_t j = 0; j <= 20; j++) {
                if (tmpa * tmpb > l) break;
                if (l % (tmpa * tmpb) == 0) ans.insert(l / (tmpa * tmpb));
                tmpb *= b;
            }
            tmpa *= a;
            if (tmpa > l) break;
        }
        std::cout << ans.size() << std::endl;
    }
    return 0;
}