tuki2501

REMAINDER

Oct 19th, 2020 (edited)
1,070
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. // ----------- define --------------
  5. #define int long long
  6. #define vi vector<int>
  7. #define ii pair<int,int>
  8. #define fi first
  9. #define sc second
  10. #define mp make_pair
  11. #define pb push_back
  12. #define pqueue priority_queue
  13. #define popcnt __builtin_popcount
  14. #define getBit(x, k) ((x >> k) & 1)
  15. #define xorBit(x, k) (x ^ (1 << k))
  16. #define siz(x) (int)((x).size())
  17. #define all(x) (x).begin(),(x).end()
  18. // ---------------------------------
  19.  
  20. int m = -1, s = -1;
  21.  
  22. int Sum(int a, int b) {
  23.   return (a + b) % m;
  24. }
  25.  
  26. int Mul(int a, int b) {
  27.   if (b == 0) return 0;
  28.   int t = Mul(a, b / 2);
  29.   t = Sum(t, t);
  30.   if (b % 2) return Sum(t, a);
  31.   return t;
  32. }
  33.  
  34. int Pow(int a, int b) {
  35.   if (b == 0) return 1;
  36.   int t = Pow(a, b / 2);
  37.   t = Mul(t, t);
  38.   if (b % 2) return Mul(t, a);
  39.   return t;
  40. }
  41.  
  42. int Sol(int x, int n) {
  43.   if (n == 0) return 0;
  44.   int t = Sol(x, n / 2);
  45.   t = Sum(Mul(t, Pow(10, s * (n / 2))), t);
  46.   if (n % 2) return Sum(Mul(t, Pow(10, s)), x);
  47.   return t;
  48. }
  49.  
  50. void Main() {
  51.   int x, n;
  52.   cin >> x >> n >> m;
  53.   s = to_string(x).size();
  54.   cout << Sol(x, n) << '\n';
  55. }
  56.  
  57. signed main() {
  58. #ifdef _DEBUG
  59.   // freopen("in" , "r", stdin );
  60.   cerr << "- ---- -- ----- <3\n";
  61. #endif
  62.   cin.tie(0)->sync_with_stdio(0);
  63.   int T = 1;
  64.   // cin >> T;
  65.   while (T--) Main();
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment