Advertisement
Sanlover

Untitled

Dec 19th, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. #include <iomanip>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int decimal(vector<int> _Double);
  8. vector<int> binary(int _Number);
  9.  
  10. vector<int> get_inverted(vector<int> p) {
  11. const int k = p.size();
  12.  
  13. if (k == 1) return binary(2);
  14.  
  15. vector<int> p_copy(k / 2);
  16. for (int i = 0; i < p_copy.size(); i++) p_copy[i] = p[i];
  17. vector<int> c = get_inverted(p_copy);
  18.  
  19. const int right_side =
  20. decimal(c) * pow(2, 3 * k / 2) - pow(decimal(c), 2) * decimal(p);
  21.  
  22. vector<int> d = binary(right_side);
  23. if (d.size() != 2 * k) d.insert(d.begin(), 0);
  24.  
  25. vector<int> a;
  26. for (int i = 0; i < k + 1; i++) a.push_back(d[i]);
  27.  
  28. for (int i = 2; i >= 0; i--) {
  29. int left = (decimal(a) + pow(2, i)) * decimal(p);
  30. int right = pow(2, 2 * k - 1);
  31. if (left < right) {
  32. a = binary(decimal(a) + pow(2, i));
  33. }
  34. }
  35.  
  36. return a;
  37. }
  38.  
  39. int main() {
  40. // Initial number
  41. /*int number = 153;
  42. cout << "My: " << setw(4)
  43. << decimal(binary(decimal(get_inverted(binary(153)))));*/
  44.  
  45. for (int i = 1; i < 5000; i++) {
  46. if (decimal(binary(decimal(get_inverted(binary(i))))) !=
  47. decimal(binary(pow(2, 2 * binary(i).size() - 1) / i)))
  48. cout << " Number = " << i << " My: " << setw(4)
  49. << decimal(binary(decimal(get_inverted(binary(i)))))
  50. << " Correct: " << setw(4)
  51. << decimal(binary(pow(2, 2 * binary(i).size() - 1) / i)) << endl;
  52. }
  53. return 0;
  54. }
  55.  
  56. int decimal(vector<int> _Double) {
  57. int result = 0;
  58.  
  59. for (int i = 0; i < _Double.size(); i++)
  60. result += _Double[i] * pow(2, static_cast<int>(_Double.size()) - i - 1);
  61. return result;
  62. }
  63.  
  64. vector<int> binary(int _Number) {
  65. vector<int> result;
  66. for (int i = 0; _Number > 0; i++) {
  67. result.insert(result.begin(), _Number % 2);
  68. _Number /= 2;
  69. }
  70. return result;
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement