打印所有不超过256,其平方具有对称性质的数。如2和11就是这样的数
Input:无
output:输出具有题目要求的数,如果输出数据不止一组,回车隔开,(答案在下方截图)
此题另一解法为判断该数的平方是否为反序数,时间复杂度会更低
//求0-256平方是否为对称数
//此题另一解法:该数平方得反序数等于该数
#include<stdio.h>
int count(int x){
int num = 0;
if(x==0)
return 1;
while(x!=0){
x = x/10;
num++;
}
return num;
}
int main(){
int q, num, a[10];
for(int i=0; i<=256; i++){
q = i*i; //i的平方得多少
num = count(q); //平方后得位数
for(int j=0; j<num; j++){
a[j] = q%10; //将平方后的每一位对应存入数组a
q = q/10;
}
for(int k=0; k<=num/2; k++){
if(a[k] != a[num-k-1])
break;
if(num==1)
printf("%d\n", i);
else if(k==num/2-1)
printf("%d\n", i);
}
}
}