P1586 四方定理

2022-03-04 02:35:05 字數 1615 閱讀 2882

四方定理是眾所周知的:任意乙個正整數nn ,可以分解為不超過四個整數的平方和。例如:25=1^+2^+2^+4^25=12+22+22+42 ,當然還有其他的分解方案,25=4^+3^25=42+32 和25=5^25=52 。給定的正整數nn ,程式設計統計它能分解的方案總數。注意:25=4^+3^25=42+32 和25=3^+4^25=32+42 視為一種方案。

輸入格式:

第一行為正整數tt (t\le 100t≤100 ),接下來tt 行,每行乙個正整數nn (n\le 32768n≤32768 )。

輸出格式:

對於每個正整數nn ,輸出方案總數。

輸入樣例#1: 複製

1

2003

輸出樣例#1: 複製

48

#include using

namespace

std;

typedef

long

long

ll;#define inf 2147483647

const ll inf =0x3f3f3f3f3f3f3f3fll;

#define ri register inttemplate

inline t min(t a, t b, t c)

template

inline t max(t a, t b, t c)

template

inline t min(t a, t b, t c, t d)

template

inline t max(t a, t b, t c, t 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("***********\n");

#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******************************

//***************************************

intmain()

return0;

}

DP P1586 四方定理

傳送門 第一行為乙個整數t代表資料組數,之後t行每行乙個數n代表要被分解的數 對於每個n輸出一行,為方案個數 2 2003 25 2 3t 100,n 23768。dp方程轉移之類顯然,唯一需要說的是有關去重的問題。顯然需要打一張到maxn的平方表。然後f i j 代表i分解為j個平方數的方案數。如...

121 四方定理

121.四方定理 數論中有著名的四方定理 所有自然數至多只要用四個數的平方和就可以表示。我們可以通過計算機驗證其在有限範圍的正確性。對於大數,簡單的迴圈巢狀是不適宜的。下面的 給出了一種分解方案。請仔細閱讀,填寫空缺的 下劃線部分 注意 請把填空的答案 僅填空處的答案,不包括題面 存入考生資料夾下對...

「四方定理」 藍橋杯

int f int n,int a,int idx return 0 int main int argc,char argv int r f number,a,0 printf d d d d d n r,a 0 a 1 a 2 a 3 return 0 請分析 邏輯,並推測劃線處的 僅把缺少的 作...