Advertisement
Guest User

D

a guest
Apr 25th, 2013
1,521
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #define _CRT_SECURE_NO_DEPRECATE
  2. #define _SECURE_SCL 0
  3. #pragma comment(linker, "/STACK:200000000")
  4.  
  5. #include <algorithm>
  6. #include <bitset>
  7. #include <cassert>
  8. #include <cctype>
  9. #include <complex>
  10. #include <ctime>
  11. #include <cstdio>
  12. #include <cstdlib>
  13. #include <cstring>
  14. #include <deque>
  15. #include <functional>
  16. #include <fstream>
  17. #include <iostream>
  18. #include <map>
  19. #include <memory.h>
  20. #include <numeric>
  21. #include <queue>
  22. #include <set>
  23. #include <stack>
  24. #include <string>
  25. #include <sstream>
  26. #include <vector>
  27. #include <utility>
  28. #include <cmath>
  29. #include <iomanip>
  30. using namespace std;
  31.  
  32. #define pb push_back
  33. #define mp make_pair
  34. #define mset(mas,val) memset(mas,val,sizeof(mas))
  35. #define sz(a) (int)(a).size()
  36. #define all(a) (a).begin(), (a).end()
  37. #define rall(a) (a).rbegin(), (a).rend()
  38.  
  39. #define forn(i,n) for (int i=0; i<int(n); ++i)
  40. #define fornd(i,n) for (int i=int(n)-1; i>=0; --i)
  41. #define forab(i,a,b) for (int i=int(a); i<=int(b); ++i)
  42.  
  43. typedef long long ll;
  44. typedef long double ld;
  45. typedef unsigned long long ull;
  46.  
  47. const int INF = (int) 1e9;
  48. const long long INF64 = (long long) 1e18;
  49. const long double eps = 1e-9;
  50. const long double pi = 3.14159265358979323846;
  51.  
  52. const int MK = 1000;
  53. const int MN = 29;
  54. long long dp[MN + 2][MK + 100];
  55. long long d[MK + 100];
  56. int modulo = 7340033;
  57. void process() {
  58.     for(int i=0; i<=MN; i++) {
  59.         dp[i][0] = 1;
  60.         for(int j=0; j<=MK; j++)
  61.             for(int k=0; k<=MK-j; k++)
  62.                 d[j+k]+=dp[i][j]*dp[i][k];
  63.         for(int j=0; j<=MK; j++)
  64.             d[j] %= modulo;
  65.         for(int j=0; j<=MK; j++)
  66.             for(int k=0; k<=MK-j; k++)
  67.                 dp[i+1][j+k+1]+=d[j]*d[k];
  68.         for(int j=0; j<=MK; j++)
  69.             dp[i+1][j] %= modulo;
  70.         mset(d, 0);
  71.     }
  72. }
  73.  
  74. int main(){
  75. #ifndef ONLINE_JUDGE
  76.     freopen("input.txt","rt",stdin);
  77.     freopen("output.txt","wt",stdout);
  78. #endif
  79.     int Q;
  80.     scanf("%d", &Q);
  81.     process();
  82.     while (Q--) {
  83.         long long n, k;
  84.         scanf("%I64d %d", &n, &k);
  85.         int iter = 0;
  86.         while (n > 1 && n % 2 == 1)
  87.             iter++, n/=2;
  88.         printf("%d\n", dp[iter][k]);
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement