1. 程式人生 > >求x,使x的平方為一個各位數字互不相同你的9位數

求x,使x的平方為一個各位數字互不相同你的9位數

/*
(1)設定10個元素的狀態陣列p,記錄數字0-9在x平方中出現的情況,陣列
元素都賦初值為1,表示數字0-9沒有被使用過
(2)對嘗試的每一個數x,求x平方,並取其各個位數字,數字作為陣列下標,
若對應元素為1,則該數字第一次出現,將對應的元素賦為0,表示該數字已
出現一次。否則,若對應元素為0,則說明有重複數字,結束這次嘗試
(3)當狀態陣列p中有9個元素為0時,就找到了問題的解。但這樣判定有解,
需要掃描一遍陣列p。為避免這個步驟,設定一個計數器k,再取x平方各個位
數字的過程記錄不同的數字的個數,當k=9時就找到了問題的解
*/
#include<stdio.h>
int main()
{
long x,y1,y2;
int p[10],i,t,k,num=0;
for(x=10000;x<=32000;x++)
{
for(i=0;i<=9;i++)
p[i]=1;
y1=x*x;
y2=y1;
k=0;
for(i=1;i<=9;i++)
{
t=y2%10;//拆分y2
y2=y2/10;
if(p[t]==1)
{
k=k+1;
p[t]=0;
}
else
break;
}
if(k==9)
{
num=num+1;
printf("num = %d ,  x = %ld ,  y1 = %ld\n",num,x,y1);
}

}