一个数字的平方和立方拥有0-9之间的10个数字,且不重复,求这个数字?我这个怎么错了?

#include<stdio.h>
int main()
{
	int n,n1,n2;
	int i,i1;
	int num1[10],num2[10];
	int j=0,k=0;
	for(n=1;n<=100;n++)
    {
    	n1=n*n;
    	n2=n*n*n;
    	while(n1)
    	{
    		num1[j]=n1%10;//把平方的每一位数字存起来
    		  j++;
    		n1=n1/10;
    		 
		}
    		
	     	while(n2)
    	{
    		 num2[k]=n2%10;//把立方的每一位数字存起来
    		 k++;
    		 n2=n2/10;
    		
       }
		for(j=0;j<10;j++)
		{
			for(k=0;k<10;k++)
			{
				if(!num1[j]==num2[k])break;//如果平方和立方没有重复的数字,就输出n
                printf("%d",n);//
			
			}
		}
			
	 
	 
		
 
	
}

return 0;
}

 

#include<stdio.h>
int main()
{
	int n,n1,n2;
	int i,i1;
	int num1[10],num2[10];
	int j=0,k=0;p = 0;
	for(n=1;n<=100;n++)
        {
        j = k  = p = 0;    // 每次循环后j,k,p的值归零
    	n1=n*n;
    	n2=n*n*n;
    	    while(n1)
    	    {
    		num1[j]=n1%10;//把平方的每一位数字存起来
    		  j++;
    		n1=n1/10; 
		}
    		
	     while(n2)
    	    {
    		 num2[k]=n2%10;//把立方的每一位数字存起来
    		 k++;
    		 n2=n2/10;	
               }

            if(j+k != 10) continue;    // 两个数长度加起来都没有十位数那肯定凑不齐0~9,超过十位数了那肯定会有重复的
            for(k = 0; j < 10; j++,k++) num1[j] = num2[k];    // 将num2合并到num1里面

            for(k = 0; k < 10; k++)    // 从num1中查找是否存在0~9
            {
                for(j = 0;j < 10; j++)
                    if(k == num1[j]) {p = 1;break;}    // 若存在k,寻找是否存在下一个
                    else p = 0;
                if(p == 0) break;    // 若p等于0,说明循环完num1都没找到k值,即0~9中有一位不存在,那就别找了下一步吧
            }

			if(p == 0) continue;    // 若p等于0,该数不符合要求,开始下一次循环
            else {
                printf("符合要求得数为:%d",n);
                break;	
            }
	
}
return 0;
}