算法竞赛入门经典----7744问题

函数floor(x)返回不超过x的最大整数。

/*解法一*/
#include
using namespace std;
int main(){
     
	for(int a=1;a<=9;a++)
	for(int b=0;b<=9;b++){
     
		int n=a*1100+b*11;
		int m=floor(sqrt(n)+0.5);  			//(+0.5)成功避免误差产生所带来的影响
		if(m*m==n)
		cout<<n<<endl;
	}
	return 0;
}
/*解法二*/
#include
using namespace std;
int main(){
     
	for(int x=1;;x++){
     
		int n=x*x;
		if(n<1000)continue;
		if(n>9999)break;
		int hi=n/100;
		int lo=n%100;
		if(hi/10==hi%10&&lo/10==lo%10)
		cout<<n<<endl;
	}
	return 0;
}

你可能感兴趣的:(#,算法竞赛入门(刘汝佳))