Sicily/2499. 平方数
2011-07-01 02:21 Min·zc 阅读(328) 评论(0) 编辑 收藏 举报
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 }
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 }