Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. string triToPI(int x, int n) {
  5. string str;
  6. for (int i = 0; i < n; i++) {
  7. if (x % 3 == 2) str.push_back('-');
  8. else {
  9. str.push_back('0' + (x % 3));
  10. }
  11. x /= 3;
  12. }
  13. return move(str);
  14. }
  15. constexpr int MAXN = 400000000;
  16. bool used[2][MAXN];
  17. bool ok[MAXN];
  18.  
  19. void qm(vector<int> arr, int n) {
  20. for (int x: arr) {
  21. int cnt = __builtin_popcount(x);
  22. int tri = 0;
  23. for (int i = 0; i < n; i++) {
  24. tri *= 3;
  25. tri += (x % 2);
  26. x /= 2;
  27. }
  28. used[0][tri] = 1;
  29. }
  30. puts("A");
  31.  
  32. vector<int> PI;
  33. bool ismodify = true;
  34. int round = 1;
  35. while (ismodify) {
  36. printf("Round %d:\n", round++);
  37. memset(used[1], 0, sizeof(used[1]));
  38. memset(ok, 0, sizeof(ok));
  39. ismodify = false;
  40. for (int i = 0; i < MAXN; i++) {
  41. if (used[0][i] == 0) continue;
  42. //cout << triToPI(i, n) << endl;
  43. int tribase = 1;
  44. int cur = i;
  45. for (int pos = 0; pos < n; pos++, cur /= 3, tribase *= 3) {
  46. if (cur % 3) continue;
  47. int tmp = i + tribase;
  48. if (used[0][tmp] == 0) continue;
  49. ok[i] = true;
  50. ok[tmp] = true;
  51. //cout << triToPI(A, n) << ", " << triToPI(tmp, n);
  52. tmp = i + tribase * 2;
  53. used[1][tmp] = true;
  54. ismodify = true;
  55. }
  56.  
  57. }
  58. for (int i = 0; i < MAXN; i++) {
  59. if (used[0][i] && !ok[i]) {
  60. PI.push_back(i);
  61. }
  62. }
  63. memcpy(used[0], used[1], sizeof(used[1]));
  64. }
  65. for (int x: PI) {
  66. cout << "PI: " << triToPI(x, n) << endl;
  67. }
  68. }
  69.  
  70. int main() {
  71. vector<int> tmp;// = {0, 1, 3};
  72. int n = 18;
  73. for (int i = 0 ; i < (1 << n); i++) {
  74. tmp.push_back(i);
  75. }
  76. qm(tmp, n);
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement