Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 1127 Accepted Submission(s): 425
题意:就是任意两个16进制字符串XOR,在 所有结果中,求结果以二进制表示时,含1个数最少是多少。
import java.io.*; import java.util.*; public class Main { BufferedReader bu; PrintWriter pw; int t,n,min; public static void main(String[] args) throws IOException{ new Main().work(); } void work() throws IOException{ bu=new BufferedReader(new InputStreamReader(System.in)); pw=new PrintWriter(new OutputStreamWriter(System.out),true); t=Integer.parseInt(bu.readLine()); while(t--!=0){ n=Integer.parseInt(bu.readLine()); String str[]=new String[n]; for(int i=0;i<n;i++){ str[i]=bu.readLine(); } min=0xfffffff; Random da=new Random(1); for(int i=1;i<1000000;i++){ int x=da.nextInt()%n; int y=da.nextInt()%n; if(x!=y&&x>=0&&y>=0){ int num1=Integer.parseInt(str[x],16); int num2=Integer.parseInt(str[y],16); int num=num1^num2; getCount(num); } } pw.println(min); } } void getCount(int num){ int len=0; int count=0; while((num>=(1<<len))){ if((num&(1<<len))!=0){ count++; } len++; } min=Math.min(min,count); } }