【发布时间】:2015-12-01 00:57:08
【问题描述】:
import java.util.Scanner;
class Special_Pairs{
private static Scanner scan;
public static void main(String [] args) {
byte t;
int n;
scan = new Scanner(System.in);
t=scan.nextByte();
int[] a=new int[100000];
while(t>0)
{
int i,j,count=0;
n=scan.nextInt();
for(i=0;i<n;i++)
{
a[i]=scan.nextInt();
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(((a[i]&a[j])==0)||((a[j]&a[i])==0))
{
count++;
}
}
}
t--;
System.out.println(count);
}
}
}
帮我降低这个程序的时间复杂度
问题:
你得到了一个大小为 N 的整数数组 A。你必须报告有序对的数量 (i,j) 使得 A[i] & A[j]=0。
这里& 表示BITWISE AND (i,j) 和(j,i) 被认为是不同的。
输入: 第一行包含 T-Number of Test Cases。每个测试的第一行包含 N。下一行包含 N 个整数 - 第 i 个整数 A[i]。
输出:为每个测试用例输出这样对的数量。
约束: T ≤ 10; N≤100000; A[i] ≤ 1000000
示例输入(明文链接)
1
5
41 47 34 40 29
样本输出(明文链接)
2
解释:这些是必需的(3 5)(5 3)
【问题讨论】:
-
欢迎来到 StackOverflow,这不是一个代码编写/家庭作业解决服务,表现出一些努力。到目前为止,您尝试过什么?
标签: time time-complexity reduce