神奇的四次方數 無限揹包
阿新 • • 發佈:2019-02-14
背景描述:
在你的幫助下,v神終於幫同學找到了最合適的大學,接下來就要通知同學了。在班級裡負責聯絡網的是dm同學,於是v神便找到了dm同學,可dm同學正在忙於研究一道有趣的數學題,為了請dm出山,v神只好請你幫忙解決這道題了。
題目描述:將一個整數m分解為n個四次方數的和的形式,要求n最小。例如,m=706,706=5^4+3^4,則n=2。
輸入資料:一行,一個整數m。
輸出資料:一行,一個整數n。
樣例資料:
input:
706
output:
2
資料範圍:對於30%的資料,m<=5000;對於100%的資料,m<=100,000
const md=1000000000; var f:array[0..1000000] of longint; a:array[0..200] of longint; n,m,i,j,k,sum:longint; function min(x,y:longint):longint; begin if x<y then exit(x); exit(y); end; begin assign(input,'input.in'); assign(output,'output.out'); reset(input); rewrite(output); readln(m); for i:=1 to 20 do a[i]:=i*i*i*i; for i:=1 to m do f[i]:=md; for i:=1 to 20 do for j:=a[i] to m do f[j]:=min(f[j],f[j-a[i]]+1); writeln(f[m]); close(input); close(output); end.