返回题解分享
讨论 / 题解分享/ 帖子详情

乘积数量 - 题解

#include <stdio.h>
#include <math.h>

int main()
{
    unsigned long long result = 0;
    unsigned long long n;
    scanf("%llu", &n);
    unsigned long long x1 = (unsigned long long)pow(n, 1.0 / 3);
    unsigned long long x2 = (unsigned long long)pow(n, 1.0 / 2);

    for (unsigned long long a = 1; a <= x1+1; a++)
    {
        for (unsigned long long b = a; b <= x2+1; b++)
        {
            unsigned long long x = a * b;
            if (x * b > n)
            {
                break;
            }
            unsigned long long maxc = n / x;
            if (b <= maxc)
            {
                result += (maxc - b + 1);
            }
        }
    }

    printf("%llu\n", result);
    return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!