Advertisement
Korotkodul

Системы счисления. Перевод ll

Nov 27th, 2021
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. #include <vector>
  5. #include <string>
  6. #include <cstdio>
  7. #include <algorithm>
  8. using namespace std;
  9.  
  10. bool less_10(char some){
  11. if (some=='0'||some=='1'||some=='2'||some=='3'||some=='4'||some=='5'||some=='6'||some=='7'||some=='8'||some=='9'){
  12. return true;
  13. } else{
  14. return false;
  15. }
  16. }
  17.  
  18. int to_num(char a){
  19. int res;
  20. if (less_10(a)){
  21. res = a - 48;
  22. }else{
  23. res = a - 'A' + 10;
  24. }
  25. return res;
  26. //cout<< res<<'\n';
  27. }
  28.  
  29. char to_char(ll x){
  30. char res;
  31. if (x < 10){
  32. res = x + 48;
  33. }else{
  34. res = x - 10 + 'A';
  35. }
  36. return res;
  37. //cout<<res<<'\n';
  38. }
  39.  
  40.  
  41. string to_str(int x){
  42. string res = to_string(x);
  43. return res;
  44. }
  45.  
  46.  
  47.  
  48. ll helper(string num, int from){
  49. //1 -- перевести в десятичную
  50. string ans = ""; // в конце перевернём эту строку
  51. int sz = num.length();
  52. ll real = 0;
  53. for(int i = 1; i <= sz; ++i){
  54. char some = num[i-1]; //digit
  55. int dig;
  56. if (less_10(some)){
  57. dig = some - '0';
  58. }
  59. else{
  60. dig = to_num(some);
  61. }
  62. real += dig * pow(from, sz-i);
  63. }
  64. return real;
  65. }
  66.  
  67. //2 -- перевести из десятичной в нужную систему
  68. string convert(ll tenth, int to){
  69. ll num = tenth;
  70. string S_num = to_string(num);
  71. string ans = "";
  72. while (num > 0){
  73. char sym; //symbol
  74. ll dig = num % to;
  75. sym = to_char(dig);
  76. //cout<<"dig = "<<dig<<'\n';
  77. ans += sym;
  78. num /= to;
  79. }
  80. reverse(ans.begin(), ans.end());
  81. return ans;
  82. }
  83.  
  84. int main()
  85. {
  86. string num;
  87. int to, from;
  88. cin>>from>>num>>to;
  89. int tenth = helper(num,from);
  90. string result = convert(tenth, to);
  91. cout<<result<<'\n';
  92. }
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement