zoukankan      html  css  js  c++  java
  • P1586 四方定理

    题目描述

    四方定理是众所周知的:任意一个正整数nn ,可以分解为不超过四个整数的平方和。例如:25=1^{2}+2^{2}+2^{2}+4^{2}25=12+22+22+42 ,当然还有其他的分解方案,25=4^{2}+3^{2}25=42+32 和25=5^{2}25=52 。给定的正整数nn ,编程统计它能分解的方案总数。注意:25=4^{2}+3^{2}25=42+32 和25=3^{2}+4^{2}25=32+42 视为一种方案。

    输入输出格式

    输入格式:

    第一行为正整数tt (tle 100t100 ),接下来tt 行,每行一个正整数nn (nle 32768n32768 )。

    输出格式:

    对于每个正整数nn ,输出方案总数。

    输入输出样例

    输入样例#1: 复制
    1
    2003
    输出样例#1: 复制
    48

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define inf 2147483647
    const ll INF = 0x3f3f3f3f3f3f3f3fll;
    #define ri register int
    template <class T> inline T min(T a, T b, T c)
    {
        return min(min(a, b), c);
    }
    template <class T> inline T max(T a, T b, T c)
    {
        return max(max(a, b), c);
    }
    template <class T> inline T min(T a, T b, T c, T d)
    {
        return min(min(a, b), min(c, d));
    }
    template <class T> inline T max(T a, T b, T c, T d)
    {
        return max(max(a, b), max(c, d));
    }
    #define scanf1(x) scanf("%d", &x)
    #define scanf2(x, y) scanf("%d%d", &x, &y)
    #define scanf3(x, y, z) scanf("%d%d%d", &x, &y, &z)
    #define scanf4(x, y, z, X) scanf("%d%d%d%d", &x, &y, &z, &X)
    #define pi acos(-1)
    #define me(x, y) memset(x, y, sizeof(x));
    #define For(i, a, b) for (int i = a; i <= b; i++)
    #define FFor(i, a, b) for (int i = a; i >= b; i--)
    #define bug printf("***********
    ");
    #define mp make_pair
    #define pb push_back
    const int maxn = 10005;
    // name*******************************
    int f[33000][10];
    int t;
    int n=32768;
    int ans=0;
    // function******************************
    
    
    
    //***************************************
    int main()
    {
    //    ios::sync_with_stdio(0);
    //    cin.tie(0);
    //    freopen("test.txt", "r", stdin);
        //  freopen("outout.txt","w",stdout);
        me(f,0);
        f[0][0]=1;
        for(int i=1; i*i<=n; i++)
            for(int j=i*i; j<=n; j++)
                for(int k=1; k<=4; k++)
                    f[j][k]+=f[j-i*i][k-1];
    
        cin>>t;
        while(t--)
        {
            ans=0;
            cin>>n;
            For(i,1,4)
            ans+=f[n][i];
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    转 Nexus启动报错:Unsupported major.minor version 51.0
    eclipse中web项目发布到tomcat时项目名称不同
    转载:oracle数据库启动不了
    ajax跨域请求获取jsonp数据
    Oracle权限管理详解(转载)
    fcc jQuery 练习
    fcc 响应式框架Bootstrap 练习3
    fcc 响应式框架Bootstrap 练习2
    fcc 响应式框架Bootstrap 练习1
    fcc html5 css 练习3
  • 原文地址:https://www.cnblogs.com/planche/p/8650454.html
Copyright © 2011-2022 走看看