int F_RET_NUM(int a,int map[]) { while (a/10) { ++map[a%10]; a/=10; } ++map[a%10]; return 0; } int F_JUD_NUM(int a) { int map[10]={0}; F_RET_NUM(a,map); if (map[0]) { return -1; } for (int i=1;i<10;++i) { if (map[i]>1) { return -1; } } return 0; } int F_TRY_CP(int a,int b,int c) { int map[10]={0}; F_RET_NUM(a,map); F_RET_NUM(b,map); F_RET_NUM(c,map); for (int i=1;i<10;++i) { if (map[i]>1||map[i]==0) { return -1; } } return 0; } int main() { int a[100]={0}; int len=0; for (int i=10;i<32;++i) { if (!F_JUD_NUM(i*i)) { a[len++]=i*i; } } for (i=0;i<len-2;++i) { for (int j=i+1;j<len-1;++j) { for (int k=j+1;k<len;++k) { if (!F_TRY_CP(a[i],a[j],a[k])) { cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<endl; } } } } return 0; }