結果
問題 | No.2186 冪乗の片側極限 |
ユーザー |
![]() |
提出日時 | 2023-01-13 21:46:49 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,066 bytes |
コンパイル時間 | 1,708 ms |
コンパイル使用メモリ | 194,272 KB |
最終ジャッジ日時 | 2025-02-10 02:25:07 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 56 |
ソースコード
#include <bits/stdc++.h>#define rep(i, a, n) for(int i = a; i < (n); i++)using namespace std;using ll = long long;using P = pair<int, int>;const int INF = 1001001001;const ll LINF = 1001002003004005006ll;// POWER_MODver. N^k % MOD__int128_t mod_pow(__int128_t n, __int128_t k){__int128_t res = 1;for(; k > 0; k >>= 1){if(k&1) res = (res*n);n = (n*n);}return res;}//__int128std::ostream &operator<<(std::ostream &dest, __int128_t value) {std::ostream::sentry s(dest);if (s) {__uint128_t tmp = value < 0 ? -value : value;char buffer[128];char *d = std::end(buffer);do {--d;*d = "0123456789"[tmp % 10];tmp /= 10;} while (tmp != 0);if (value < 0) {--d;*d = '-';}int len = std::end(buffer) - d;if (dest.rdbuf()->sputn(d, len) != len) {dest.setstate(std::ios_base::badbit);}}return dest;}int main(){ll a, b;cin >> a >> b;if (a == 0) cout << 0 << endl;else cout << mod_pow(a, b) << endl;return 0;}