c语言: 求x的取值,使x的平方为各位数字不同的9位数。

#include <stdio.h>
#include <math.h>
int main(){
	long x,y,y2;   //k用来记录x*x中不重复出现的数字个数 
	int p[10],i,k,t,num=0;   //num用来记录一行输出的个数 
	//开始遍历x所有可能的结果 
	for(x=10000;x<sqrt(987654321);x++){
		//遍历每一个可能的9位数(已存入数组中) 
		for(i=1;i<=9;i++){
			p[i]=1;  //数组p所有元素初值设为1 
		}
		y2=y=x*x;
		k=0;
		for(i=1;i<=9;i++){
			t=y2%10;   //t为x上的每一位数 
			y2=y2/10;
			if(p[t]==1){  //说明这个数第一次出现 
			  k++;     //计数加一 
			  p[t]=0;  //出现过一次后就将该位变为0 
		    }
	    }
	    if(k==9){  //说明各个位数的数字都不相同满足要求 
	    	printf("%3d : %1d^2=%1d ",++num,x,y);
	    	if(num%3==0) printf("\n");   //控制每行输出3个解 
		}
    } 
}

猜你喜欢

转载自blog.csdn.net/KK_1657654189/article/details/120089757