1
#include
<iostream>
2
#include
<memory.h>
3
using
namespace std;
4
int nu[
60001];
5
int sq[
250];
6
void ini()
7 {
8 sq[
0]=
1;
9 memset(nu,
0,
sizeof(nu));
10
for(
int i=
1;i*i<=
60000;i++)
11 {
12 sq[sq[
0]++]=i*i;
13 }
14
for(
int i=
1;i<=sq[
0];i++)
15
for(
int j=sq[i];j<=
60000;j++)
16
if((nu[j]>nu[j-sq[i]]+
1&&nu[j]!=
0)||(nu[j]==
0))
17 nu[j]=nu[j-sq[i]]+
1;
18
19 }
20
int main()
21 {
22 ini();
23
int t;
24 cin>>t;
25
while(t--)
26 {
27
int n;
28 cin>>n;
29 cout<<nu[n]<<endl;
30 }
31 }
转载于:https://www.cnblogs.com/congzc/archive/2011/07/01/2329943.html