fork download
  1. /*
  2. ==> Don't stop when you're tired, stop when you're done.
  3. --> @author: MIDORIYA_
  4. */
  5. //*==============================================================
  6. #include <bits/stdc++.h>
  7. using namespace std;
  8. typedef long long ll;
  9. typedef double db;
  10. typedef long double ld;
  11. typedef pair<int, int> pii;
  12. typedef vector<int> vi;
  13. typedef vector<ll> vll;
  14. typedef vector<db> vd;
  15. typedef vector<ld> vld;
  16. typedef vector<bool> vb;
  17. typedef vector<vector<ll>> vvl;
  18. typedef vector<pii> vii;
  19. typedef set<int> si;
  20. typedef set<ll> sl;
  21. #define pb push_back
  22. #define all(x) x.begin(), x.end()
  23. #define rall(x) x.rbegin(), x.rend()
  24. #define endl "\n"
  25. const ll mod = 1'000'000'007;
  26. #define INF 2'000'000'000
  27. #define time cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " Secs" << endl;
  28. //*===================>>>Fast-IO-Functions<<<=================
  29. void fastIO()
  30. {
  31. ios_base::sync_with_stdio(false);
  32. cin.tie(nullptr);
  33. cout.tie(nullptr);
  34. }
  35. //*===================>>>File-IO-Functions<<<=================
  36. void fileIO()
  37. {
  38. #ifndef ONLINE_JUDGE
  39. freopen("in.txt", "r", stdin);
  40. freopen("out.txt", "w", stdout);
  41. #endif
  42. }
  43. //*===================>>>ONE-FOR-ALL-Function<<<==============
  44. ll mul(ll a, ll b)
  45. {
  46. return ((a % mod) * (b % mod)) % mod;
  47. }
  48.  
  49. ll add(ll a, ll b)
  50. {
  51. return ((a % mod) + (b % mod)) % mod;
  52. }
  53.  
  54. void OneForAll()
  55. {
  56. string N;
  57. cin >> N;
  58.  
  59. string addend = "9999";
  60. string add_res;
  61. int carry = 0, i = N.size() - 1, j = addend.size() - 1;
  62. while (i >= 0 || j >= 0 || carry)
  63. {
  64. ll digitN = (i >= 0) ? N[i] - '0' : 0;
  65. ll digitA = (j >= 0) ? addend[j] - '0' : 0;
  66. ll sum = add(digitN, add(digitA, carry));
  67. add_res += char(sum % 10 + '0');
  68. carry = sum / 10;
  69. i--;
  70. j--;
  71. }
  72. reverse(all(add_res));
  73. cout << add_res << endl;
  74.  
  75. string mul_res(N.size() + addend.size(), '0');
  76. for (int k = N.size() - 1; k >= 0; --k)
  77. {
  78. int carry = 0;
  79. ll n_digit = N[k] - '0';
  80. for (int l = addend.size() - 1; l >= 0; --l)
  81. {
  82. ll m_digit = addend[l] - '0';
  83. int pos = k + l + 1;
  84. ll prod = add(mul_res[pos] - '0', mul(n_digit, m_digit));
  85. prod = add(prod, carry);
  86. mul_res[pos] = char(prod % 10 + '0');
  87. carry = prod / 10;
  88. }
  89. int pos = k;
  90. ll sum = add(mul_res[pos] - '0', carry);
  91. mul_res[pos] = char(sum % 10 + '0');
  92. carry = sum / 10;
  93. }
  94. while (mul_res.size() > 1 && mul_res[0] == '0')
  95. mul_res.erase(mul_res.begin());
  96. cout << mul_res << endl;
  97. }
  98.  
  99. int main()
  100. {
  101. fastIO();
  102. fileIO();
  103.  
  104. ll tc = 1;
  105. // cin >> tc;
  106. while (tc--)
  107. {
  108. OneForAll();
  109. }
  110. time;
  111. return 0;
  112. }
  113.  
  114. // fibonacci series -> 0 1 1 2 3 5 8 13 21 34 ...
  115. // factorial series -> 1 1 2 6 24 120 720 ...
  116.  
Success #stdin #stdout #stderr 0s 5308KB
stdin
Standard input is empty
stdout
9999
0
stderr
Time Taken: 0.004364 Secs