Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
- #include <map>
- #include <math.h>
- #define ll long long
- using namespace std;
- enum {
- magic = 1000000007
- };
- ll my_mod(ll a, ll n) {
- return ((a % n) + n) % n;
- }
- template<typename T>
- ostream &operator<<(ostream &out, vector<T> &v) {
- for (int i : v) {
- out << i << ' ';
- }
- out << '\n';
- return out;
- }
- template<typename T>
- istream &operator>>(istream &in, vector<T> &v) {
- for (int i = 0; i < v.size(); ++i) {
- in >> v[i];
- }
- return in;
- }
- ll my_minys(ll s, ll a){
- if ((s-a)>0) return s-a;
- return 0;
- }
- ll ldp(ll n, ll k);
- ll bdp(ll n, ll k) {
- if (n < 4 * k) {
- return ldp(n, k);
- }
- long long int t = n / k - 1;
- long long int s = bdp(n - t, k) /*+ t * k*/;
- long long int d0 = n-(n/k -1 )*k;
- long long int y = my_mod(s + t * (k) + (my_minys(s ,d0)) / (k - 1), n);
- // cout << "n:" << n << " n/k-1:" << t << " " << y << endl;
- return y;
- }
- ll ldp(ll n, ll k) {
- if (n == 1)
- return 0;
- return my_mod(ldp(n - 1, k) + k, n);
- }
- int main() {
- ll n, k;
- cin >> n >> k;
- cout << bdp(n, k)+1 << endl;
- // cout << ldp(n, k);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement