Advertisement
Guest User

Very easy

a guest
Dec 12th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.95 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define sc              scanf
  3. #define pf              printf
  4. #define Pi              2*acos(0.0)
  5. #define ms(a,b)         memset(a, b, sizeof(a))
  6. #define pb(a)           push_back(a)
  7. #define vi(a)           vector<a>
  8. #define pii(a, b)       pair<a, b>
  9. #define MP              make_pair
  10. #define db              double
  11. #define ll              long long
  12. #define eps             1e-9
  13. #define ff              first
  14. #define ss              second`
  15. #define sqr(x)          (x)*(x)
  16. #define D(x)            cout<<#x " = "<<(x)<<endl
  17. #define MOD             100007
  18. #define MAX             INT_MAX
  19. #define CIN             ios_base::sync_with_stdio(0); cin.tie(0)
  20. #define SZ(a)           (int)a.size()
  21. #define sf(a)           scanf("%d",&a)
  22. #define sfl(a)          scanf("%lld",&a)
  23. #define sff(a,b)        scanf("%d %d",&a,&b)
  24. #define sffl(a,b)       scanf("%lld %lld",&a,&b)
  25. #define sfff(a,b,c)     scanf("%d %d %d",&a,&b,&c)
  26. #define sfffl(a,b,c)    scanf("%lld %lld %lld",&a,&b,&c)
  27. #define loop(i,n)       for(int i=0;i<n;i++)
  28. #define REP(i,a,b)      for(int i=a;i<b;i++)
  29. #define TEST_CASE(t)    for(int z=1;z<=t;z++)
  30. #define auto(x, a)      for(auto x: a)
  31. #define PRINT_CASE      printf("Case %d: ",z)
  32. #define CASE_PRINT      cout<<"Case "<<z<<":"<<endl;
  33. #define all(a)          a.begin(),a.end()
  34. #define intlim          2147483648
  35. #define inf             1000000
  36. #define ull             unsigned long long
  37. #define vprint(v)       auto(x, v)cout<<x<<" ";cout<<endl;
  38. #define bp(n)           __builtin_popcount(n)
  39. #define Read(a)         freopen(a, "r", stdin);
  40. #define Write(a)        freopen(a, "w", stdout);
  41. using namespace std;
  42. //----------------------Graph Moves--------------------
  43. //const int fx[]={+1,-1,+0,+0}; const int fy[]={+0,+0,+1,-1};
  44. //const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1}; const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
  45. //const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
  46. /*-----------------------Bitmask------------------*//*
  47. int Set(int N,int pos){return N=N | (1<<pos);}
  48. int reset(int N,int pos){return N= N & ~(1<<pos);}
  49. bool check(int N,int pos){return (bool)(N & (1<<pos));}
  50. int lcm(int a, int b) {  return a * (b / __gcd(a, b)); }
  51. /*---------------------Prime Sieve--------------------------*//*
  52. ll _sieve_size;bitset<100000100>bs;vi(ll) primes;
  53. void sieve(ll upperbound) {_sieve_size = upperbound +1;bs.set();bs[0] = bs[1] = 0;
  54.     for(ll i = 2; i < _sieve_size; i++)if(bs[i]){for(ll j = i*i; j <= _sieve_size; j += i)bs[j] = 0; primes.pb((int)i);}}
  55. bool isPrime(ll N) {if(N <= _sieve_size)return bs[N];for(int i = 0; i < (int)SZ(primes); i++)if(N % primes[i] == 0)return false; return true;}
  56. /*-----------------------Big MOD----------------------------*//*
  57. ll big_mod(ll base, ll power, ll mod){
  58.     if(power == 0)return  1;else if(power & 1){ll p1 = base % mod; ll p2 = (big_mod(base, power-1, mod)) % mod; return (p1 * p2) % mod;}
  59.     else{ ll p1 = (big_mod(base, power/2, mod)) % mod; return (p1 * p1) % mod; }}
  60. /*---------------------Segment Tree-----------------------------*//*
  61. struct data{ll val, prop; bool mark;};
  62. vector<data>t(100005*4);
  63. void build(int a[], int v, int lf, int rt){if(lf==rt){t[v].val = a[lf];}
  64. else{int md = (lf+rt) / 2; build(a, v*2, lf, md); build(a, v*2+1, md+1, rt); t[v].val = t[v*2].val + t[v*2+1].val;}}
  65. void push(int v, int lf, int md, int rt){if(t[v].mark){
  66. t[v*2].val += t[v].prop * (md-lf+1); t[v*2+1].val += t[v].prop * (rt-md); t[v*2].prop += t[v].prop; t[v*2+1].prop += t[v].prop;
  67. t[v*2].mark = t[v*2+1].mark = true; t[v].mark  = t[v].prop = 0;}}
  68. void update(int v, int lf, int rt, int l, int r, int newVal){ if(l > r)return; if(lf == l && r == rt){
  69. t[v].val += (ll)newVal * (ll)(rt-lf+1);t[v].prop += (ll)newVal; t[v].mark = true;}
  70. else{ int md = (lf+rt) / 2; push(v, lf, md, rt); update(v*2, lf, md, l, min(r, md), newVal); update(v*2+1, md+1, rt, max(l, md+1), r, newVal);
  71. t[v].val = t[v*2].val + t[v*2+1].val;}}
  72. ll sum(int v, int lf, int rt, int l, int r){if(l > r)return 0;if(lf == l && r == rt){return t[v].val;}
  73. else{int md = (lf+rt) / 2;push(v, lf, md, rt);ll p1 = sum(v*2, lf, md, l, min(md, r));ll p2 = sum(v*2+1, md+1, rt, max(l, md+1), r);return p1+p2;}}
  74. void Clear(){loop(i, SZ(t))t[i].val = 0, t[i].prop = 0, t[i].mark = false;}
  75. /*---------------------Mobius Function-----------------------------*//*
  76. vi(int) mobius(int fSize){
  77. int mobi[fSize+2];bool pr[fSize+2];
  78. loop(i, fSize)mobi[i] = 1, pr[i] = false; REP(i, 2, fSize){if(!pr[i]){mobi[i] *= -1;
  79. for(int j = i+i; j < fSize; j += i){pr[j] = 1;mobi[j] *= (j%(i*i) ? -1:0);}}}
  80. vi(int)v(mobi, mobi+fSize);return v;}
  81. /*-----------------------------IO-----------------------------------------*/
  82. void fileIO(){
  83.     #ifndef ONLINE_JUDGE
  84.         Read("D://Input.txt"); Write("D://Output.txt");
  85.     #else
  86.         Read("immetric.in"); Write("immetric.out");
  87.     #endif
  88. }
  89. /*-----------------------------------------------------------------------*/
  90.  
  91. string Sum(string &s1, string &s2){
  92.     string res;
  93.     reverse(s1.begin(), s1.end());
  94.     reverse(s2.begin(), s2.end());
  95.  
  96.     ll carry = 0;
  97.     for(ll i = 0; i < max(s1.length(), s2.length()); i++){
  98.         ll num1 = 0, num2 = 0;
  99.         if(i < s1.length())num1 = s1[i] - '0';
  100.         if(i < s2.length())num2 = s2[i] - '0';
  101.  
  102.         ll s = num1 + num2 + carry;
  103.         carry = s/10;
  104.         s %= 10;
  105.         res.push_back(s + '0');
  106.     }
  107.     if(carry>0)res.push_back(carry + '0');
  108.  
  109.     reverse(res.begin(), res.end());
  110.  
  111.     return res;
  112. }
  113.  
  114. string Mul(string &s1, string &s2){
  115.     string res, ans = "0";
  116.     reverse(s1.begin(), s1.end());
  117.     reverse(s2.begin(), s2.end());
  118.  
  119.     ll sz1 = s1.length(), sz2 = s2.length();
  120.  
  121.     if(sz1 > sz2){
  122.         swap(sz1, sz2);
  123.         swap(s1, s2);
  124.     }
  125.  
  126.     ll carry = 0;
  127.     for(ll j = 0; j < sz1; j++){
  128.         res = "";
  129.         for(ll i = 0; i < sz2; i++){
  130.             ll num1 = 0, num2 = 0;
  131.             num1 = s1[j] - '0';
  132.             num2 = s2[i] - '0';
  133.  
  134.             ll s = num1 * num2 + carry;
  135.             carry = s/10;
  136.             s %= 10;
  137.             res.push_back(s + '0');
  138.         }
  139.         //cout<<res<<endl;
  140.         if(carry>0)res.push_back(carry + '0');
  141.         reverse(res.begin(), res.end());
  142.         loop(k, j)res += '0';
  143.         ans = Sum(ans, res);
  144.     }
  145.  
  146.     return ans;
  147. }
  148.  
  149. ll StoI(string a){
  150.     ll ans = 0;
  151.     loop(i, SZ(a)){
  152.         ans *= 10;
  153.         ans += a[i]-'0';
  154.     }
  155.     return ans;
  156. }
  157.  
  158. int main()
  159. {
  160.     //CIN;
  161.     //fileIO();  int start_s = clock();
  162.  
  163.     string a, b, ans;
  164.     while(cin>>a>>b){
  165.         REP(i, 1, StoI(a)+1){
  166.             REP(j, 1, i+1){
  167.                 ans = Mul(ans, b);
  168.             }
  169.            
  170.             string sum = ans;
  171.            
  172.             REP(j, 2, i+1){
  173.                 ans = Sum(ans, sum);
  174.             }
  175.         }
  176.     }
  177.     cout<<Mul(a, b)<<endl;
  178.  
  179.     //int end_s=clock();
  180.     //printf("\nTime :: %.2lf\n", (double)(end_s-start_s)/CLOCKS_PER_SEC);
  181.     return 0;
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement