I got only 10 points for the below code . I have watched the editorial and it’s using the same approach as mine. Any suggestions welcome as to why this happened.
import java.util.Scanner;
class Codechef {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
try{
String u = sc.nextLine();
int t = Integer.parseInt(u);
while (t-- > 0) {
int n = Integer.parseInt(sc.nextLine());
String a = sc.nextLine();
String b = sc.nextLine();
int z1 = 0, o1 = 0, z2 = 0, o2 = 0;
for (int i = 0; i < n; i++) {
if (a.charAt(i) == '0') {
z1 += 1;
} else {
o1 += 1;
}
}
for (int i = 0; i < n; i++) {
if (b.charAt(i) == '0') {
z2 += 1;
} else {
o2 += 1;
}
}
int m = Math.abs(o1 - o2);
int d = Math.min(z1, o2) + Math.min(z2, o1);
int sum = 0;
if (d < m) {
System.out.println("0");
continue;
}
for (int i = m; i <= d; i += 2) {
sum = modulus(sum, n, i);
}
System.out.println(sum);
}
}
catch(Exception e){}
}
public static int modulus(int sum,int n,int k){
int num=comb(n,k);
sum=( (sum%1000000007) +(num%1000000007) )%1000000007;
return sum;
}
public static int comb(int n,int k){
if(k==1)
return n;
if(k==n)
return 1;
int denom=1;
int num=1;
for (int i = 2; i <=n; i++) {
num=( (num%1000000007) * (i%1000000007) )%1000000007;
}
for (int i = 2; i <=k; i++) {
denom=( (denom%1000000007) * (i%1000000007) )%1000000007;
}
for (int i = 2; i <=n-k; i++) {
denom=( (denom%1000000007) * (i%1000000007) )%1000000007;
}
num=( num / denom )%1000000007;
return num;
}
}