Advertisement
leminhkt

noname53

May 3rd, 2020
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3.  
  4. using namespace std;
  5.  
  6.  
  7. typedef vector<long long> vi;
  8.  
  9.    
  10. vi vec(int xx){
  11.     vi a; a.clear();
  12.     int x = xx, base = 1000;
  13.     while (base > x) base /= 10;
  14.     for (; base; base /= 10)
  15.     {
  16.         a.push_back(x/base);
  17.         x %= base;
  18.     }
  19.     return a;
  20. }
  21.  
  22. vi operator * (vi aa, vi b){
  23.     vi a(aa.size() + b.size() - 1, 0);
  24.     for (int i = 0; i < aa.size(); i++)
  25.         for (int j = 0; j < b.size(); j++)
  26.             a[i + j] += aa[i]*b[j];
  27.     for (int i = a.size() - 1; i; i--)
  28.         a[i - 1] += a[i]/10,
  29.         a[i]%=10;
  30.     vi c;
  31.     if (a[0] > 9) c = vec(a[0]/10);
  32.     a[0] %= 10;
  33.     for (int i = 0; i < a.size(); i++)
  34.         c.push_back(a[i]);
  35.     return c;
  36. }
  37.  
  38. int _greater(vi a, vi b){
  39.     if (a.size() != b.size())
  40.         return (a.size() > b.size()) ? 1 : -1;
  41.     for (int i = 0; i < a.size(); i++){
  42.         if (a[i] > b[i]) return 1;
  43.         if (a[i] < b[i]) return -1;
  44.     }
  45.     return 0;
  46. }
  47.  
  48. vi operator - (vi a, vi b){
  49.     int n = a.size(), m = b.size();
  50.     for (int i = 1; i <= m; i++){
  51.         a[n - i] -= b[m - i];
  52.         if (a[n - i] < 0 && i < n)
  53.             a[n - i - 1]--;
  54.         a[n - i] += 10;
  55.         a[n - i] %= 10;
  56.     }
  57.     for (int i = m; i < n; i++){
  58.         if (a[n - i] < 0)
  59.             a[n - i - 1]--;
  60.         a[n - i] += 10;
  61.         a[n - i] %= 10;    
  62.     }
  63.     vi c;
  64.     if (a[0]) c.push_back(a[0]);
  65.     for (int i = 1; i < a.size(); i++)
  66.         c.push_back(a[i]);
  67.     return c;
  68. }
  69.    
  70. int main()
  71. {
  72. // #ifndef ONLINE_JUDGE
  73. //  freopen("input.txt","r",stdin);
  74. // //   freopen("output.txt","w", stdout);
  75. // #endif  
  76.    
  77.     int x, y;
  78.     cin >> x >> y;
  79.    
  80.     vi a = vec(x), xx = vec(x);
  81.     for (int i = 1; i < y; i++) a = a*xx;
  82.     vi b = vec(y), yy = vec(y);
  83.     for (int i = 1; i < x; i++) b = b*yy;
  84.     vi r;
  85.     int ss = _greater(a, b);
  86.     if (ss > 0)
  87.         r = a - b;
  88.     else if (ss < 0)
  89.         cout << "-",
  90.         r = b - a;
  91.     else
  92.         r.push_back(0);
  93.    
  94.     for (int i = 0; i < r.size(); i++)
  95.         cout << r[i];
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement