给定n个整数,从中选出1个或多个,使选出整数的乘积是完全平方数。一共有多少种选法?
例如,{4,6,10,15}有3种4、6、10、15和4、6、10、15。
#include <stdio.h>
#include <math.h>
//给定n个整数,从中选出1个或多个,使选出整数的乘积是完全平方数。一共有多少种选法?
//例如,{4,6,10,15}有3种 4、6、10、15和4、6、10、15。
int wanquan(int n)
{
int num;
num=sqrt(n);
if(num*num==n)
return 1;
else
return 0;
}
int main()
{
int n,count=0;
int *a;
int i,j,k,m;
printf("input the number of numbers:");
scanf("%d",&n);
a=new int[n];
j=1; // 2^n-1
printf("input all the numbers:");
for(i=0;i<n;i++){
scanf("%d",a+i);
j=j*2;
}
j=j-1;
for(i=1;i<=j;i++)
{
int temp=1;m=i;
k=0; //shuzu xiabiao
while(m){
if(m%2)
temp=temp*a[k];
m=m/2;
k++;
}
if(wanquan(temp))
count++;
}
printf("the result is %d.\n",count);
return 0;
}