fork(1) download
  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. using namespace std;
  4. const int N = 200000 + 10, M = 1000000007;
  5. int fact[N];
  6.  
  7. int power(int x, int n) {
  8. if(n == 0) return 1;
  9. if(n == 1) return x;
  10. int y = power(x, n/2);
  11. y = (ll)y*y%M;
  12. if(n&1) y = (ll)y*x%M;
  13. return y;
  14. }
  15.  
  16. int C(int n, int k) {
  17. return int((ll)fact[n] * power((ll)fact[n-k] * fact[k] % M, M-2) % M);
  18. }
  19.  
  20.  
  21. int main() {
  22. fact[0] = 1;
  23. for(int i=1; i<N; ++i)
  24. fact[i] = (ll)fact[i-1]*i%M;
  25. int n, m;
  26. int t;
  27. scanf("%d", &t);
  28. while(t--) {
  29. scanf("%d%d", &n, &m);
  30. n = abs(n);
  31. if(((m-n)&1) || n>m) puts("0");
  32. else printf("%d\n", int((ll)C(m, n+(m-n)/2) * power(power(2, m), M-2) % M));
  33. }
  34. return 0;
  35. }
Success #stdin #stdout 0s 4524KB
stdin
3
0 0
1 1
-3 3
stdout
1
500000004
125000001