Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define x first
- #define y second
- #define y1 Y1
- #define y2 Y2
- #define mp make_pair
- #define pb push_back
- using namespace std;
- typedef long long LL;
- typedef pair<int, int> pii;
- template <typename T> inline int Chkmax (T &a, T b) { return a < b ? a = b, 1 : 0; }
- template <typename T> inline int Chkmin (T &a, T b) { return a > b ? a = b, 1 : 0; }
- inline void proc_status()
- {
- ifstream t ("/proc/self/status");
- cerr << string (istreambuf_iterator <char> (t), istreambuf_iterator <char> ()) <<endl;
- }
- template <typename T> T read ()
- {
- T sum = 0, fl = 1; char ch = getchar();
- for (; !isdigit(ch); ch = getchar()) if (ch == '-') fl = -1;
- for (; isdigit(ch); ch = getchar()) sum = (sum << 3) + (sum << 1) + ch - '0';
- return sum * fl;
- }
- const int Maxn = 1000000 + 100, Mod = 1e9 + 7;
- int N, M;
- inline int Pow (int a, int b)
- {
- int ans = 1;
- for (int i = b; i; i >>= 1, a = 1ll * a * a % Mod) if (i & 1) ans = 1ll * ans * a % Mod;
- return ans;
- }
- inline void Solve ()
- {
- printf("%lld\n", 1ll * Pow((2ll * N + 2) % Mod, M) * (N + 1 - M) % Mod * Pow(N + 1, Mod - 2) % Mod);
- }
- inline void Input ()
- {
- N = read<int>(), M = read<int>();
- }
- int main()
- {
- #ifndef ONLINE_JUDGE
- freopen("A.in", "r", stdin);
- freopen("A.out", "w", stdout);
- #endif
- Input();
- Solve();
- return 0;
- }
Add Comment
Please, Sign In to add comment