Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef vector<long long> vi;
- vi vec(int xx){
- vi a; a.clear();
- int x = xx, base = 1000;
- while (base > x) base /= 10;
- for (; base; base /= 10)
- {
- a.push_back(x/base);
- x %= base;
- }
- return a;
- }
- vi operator * (vi aa, vi b){
- vi a(aa.size() + b.size() - 1, 0);
- for (int i = 0; i < aa.size(); i++)
- for (int j = 0; j < b.size(); j++)
- a[i + j] += aa[i]*b[j];
- for (int i = a.size() - 1; i; i--)
- a[i - 1] += a[i]/10,
- a[i]%=10;
- vi c;
- if (a[0] > 9) c = vec(a[0]/10);
- a[0] %= 10;
- for (int i = 0; i < a.size(); i++)
- c.push_back(a[i]);
- return c;
- }
- int _greater(vi a, vi b){
- if (a.size() != b.size())
- return (a.size() > b.size()) ? 1 : -1;
- for (int i = 0; i < a.size(); i++){
- if (a[i] > b[i]) return 1;
- if (a[i] < b[i]) return -1;
- }
- return 0;
- }
- vi operator - (vi a, vi b){
- int n = a.size(), m = b.size();
- for (int i = 1; i <= m; i++){
- a[n - i] -= b[m - i];
- if (a[n - i] < 0 && i < n)
- a[n - i - 1]--;
- a[n - i] += 10;
- a[n - i] %= 10;
- }
- for (int i = m; i < n; i++){
- if (a[n - i] < 0)
- a[n - i - 1]--;
- a[n - i] += 10;
- a[n - i] %= 10;
- }
- vi c;
- if (a[0]) c.push_back(a[0]);
- for (int i = 1; i < a.size(); i++)
- c.push_back(a[i]);
- return c;
- }
- int main()
- {
- // #ifndef ONLINE_JUDGE
- // freopen("input.txt","r",stdin);
- // // freopen("output.txt","w", stdout);
- // #endif
- int x, y;
- cin >> x >> y;
- vi a = vec(x), xx = vec(x);
- for (int i = 1; i < y; i++) a = a*xx;
- vi b = vec(y), yy = vec(y);
- for (int i = 1; i < x; i++) b = b*yy;
- vi r;
- int ss = _greater(a, b);
- if (ss > 0)
- r = a - b;
- else if (ss < 0)
- cout << "-",
- r = b - a;
- else
- r.push_back(0);
- for (int i = 0; i < r.size(); i++)
- cout << r[i];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement