求一个数最少能表示成几个数的平方和(比如5=1+4,返回2)

    xiaoxiao2021-03-25  53

    bool is_sqrt(long long n) { int m = sqrt(n); if (m*m == n) return true; else return false; } int solve(long long n) { if (is_sqrt(n)) return 1; while (n % 4 == 0) n /= 4; if (n % 8 == 7) return 4; for (int i = 0; i*i < n; i++) { if (is_sqrt(n - i*i)) return 2; } return 3; }
    转载请注明原文地址: https://ju.6miu.com/read-35723.html

    最新回复(0)