把123456789组合成三个三个三位数,要求每个数字仅用一次,并且每个三位数均是完全平方数的c语言程序
第1个回答 2014-11-27
#include"stdio.h"
/*计算100至1000的平方数个数*/int square(){
int num=0;
for(int i=100;i<1000;i++)
for(int j=10;j<32;j++)
if(i==j*j)
num++;
return num;
}
void arr_num(int i,int*&arr,int num){/* arr是一个数组首元素的地址,num的三个数字复制到arr指向的数组中,而i控制复制开始的位置*/
for(int j=i;j<i+3;j++){
*(arr+j)=num%10;
num/=10;
}
}
int check(int a,int b,int c,int*arr){/*利用arr_num函数把三个数数字都复制到arr中,并且测试九个数字是否都不一样*/
int bo=1;
arr_num(0,arr,a);
arr_num(3,arr,b);
arr_num(6,arr,c);
for(int i=0;i<9;i++)
for(int j=i+1;j<9;j++)
if(*(arr+i)==*(arr+j))
bo=0;
return bo;
}
int main(){
int arr[9];
int square_num=square();
int num=0;
int *a=new int[square_num];
for(int i=100;i<1000;i++)
for(int j=10;j<32;j++)
if(i==j*j)
a[num++]=i;
for(int i=0;i<square_num;i++)
for(int j=i+1;j<square_num;j++)
for(int k=j+1;k<square_num;k++){
if(check(a[i],a[j],a[k],arr))
printf("%d,%d,%d\n",a[i],a[j],a[k]);
}
return 0;
}本回答被网友采纳
/*计算100至1000的平方数个数*/int square(){
int num=0;
for(int i=100;i<1000;i++)
for(int j=10;j<32;j++)
if(i==j*j)
num++;
return num;
}
void arr_num(int i,int*&arr,int num){/* arr是一个数组首元素的地址,num的三个数字复制到arr指向的数组中,而i控制复制开始的位置*/
for(int j=i;j<i+3;j++){
*(arr+j)=num%10;
num/=10;
}
}
int check(int a,int b,int c,int*arr){/*利用arr_num函数把三个数数字都复制到arr中,并且测试九个数字是否都不一样*/
int bo=1;
arr_num(0,arr,a);
arr_num(3,arr,b);
arr_num(6,arr,c);
for(int i=0;i<9;i++)
for(int j=i+1;j<9;j++)
if(*(arr+i)==*(arr+j))
bo=0;
return bo;
}
int main(){
int arr[9];
int square_num=square();
int num=0;
int *a=new int[square_num];
for(int i=100;i<1000;i++)
for(int j=10;j<32;j++)
if(i==j*j)
a[num++]=i;
for(int i=0;i<square_num;i++)
for(int j=i+1;j<square_num;j++)
for(int k=j+1;k<square_num;k++){
if(check(a[i],a[j],a[k],arr))
printf("%d,%d,%d\n",a[i],a[j],a[k]);
}
return 0;
}本回答被网友采纳
第2个回答 2014-11-26
147 258 369追问
可是我需要的是程序呀