/*
* =====================================================================================
*
* Filename: 1.cpp
*
* Description:
*
* Version: 1.0
* Created: 2011年11月13日 12时55分25秒
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Company:
*
* =====================================================================================
*/
#include<iostream>
using namespace std;
int a[60001]={0};
int main(int argc, char *argv[])
{
int T;
for( int i=1; i*i<=60000 ; i++ )
{
a[i*i]=1;
}
for( int i=1; i<=60000 ; i++ )
{
if( a[i]==0 )
{
for( int j=1; j*j<=i ; j++ )
{
if( a[i-j*j]==1 )
{
a[i]=2;
break;
}
if( a[i-j*j]==2 )
{
a[i]=3;//开始的时候在这里break掉了,结果也wa掉了,
//break;当a[i-j*j]==2并不意味3就是最小值可以break了,可能在以后循环会遇到a[i-j*j]==1
}
}
}
}
cin>>T;
while( T-- )
{
int n;
cin>>n;
if( a[n] )
{
cout<<a[n]<<endl;
}
else
{
cout<<'4'<<endl;
}
}
return 0;
}
2499. 平方数
最新推荐文章于 2013-09-18 16:58:09 发布