给定n个整数,从中选出1个或多个,使选出整数的乘积是完全平方数。一共有多少种选法? 例如,{4,6,10,15}有3种4、6、10、15和4、6、10、15。
2016-08-14 17:15
381 查看
#include <stdio.h> #include <math.h> int wanquan(int n) { __int64 num; num=sqrt(n); double x=sqrt(n); if(num-x==0) return 1; else return 0; } int main() { int n,count=0; __int64 *a; int i,j,k,m; int t; scanf("%d",&t); for(int p=1; p<=t; p++) { count=0; scanf("%d",&n); a=new __int64 ; j=1; // 2^n-1 for(i=0; i<n; i++) { scanf("%d",a+i); j=j*2; } j=j-1; for(i=1; i<=j; i++) { __int64 temp=1; m=i; k=0; while(m) { if(m%2) temp=temp*a[k]; m=m/2; k++; } if(wanquan(temp)) count++; } printf("Case #%d:\n%d\n",p,count); } return 0; }
相关文章推荐
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!的末尾有两个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 有一个整数n,写一个函数f(n),返回0~n之间出现的“1”的个数,例如f(1)=1; f(13)=6(1,10,11,12,13一共6个1),最大的f(n)=n的n是多少
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果。
- 给定一个数N,求出1-N之间的数字有多少个1,例如N=11时结果为4(只有1,10,11含1)
- 1~5122这个范围内的整数一共有多少个零,例如100就是2个零。
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。
- 给定整数区间[A,B]问其中有多少个完全平方数
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- GCD 莫比乌斯反演 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对.
- CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示
- 剑指offer--面试题10-整数的二进制中有多少个1
- 判断任一给定整数N是否满足条件: 它是完全平方数,又至少有两位数字相同,如144、676等。
- 编程之美 给定一个整数N,那么N的阶乘N!末尾有多少个0?
- C语言解决对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?