Task: | Exponentiation |
Sender: | aalto2024k_003 |
Submission time: | 2024-11-13 20:13:39 +0200 |
Language: | C++ (C++20) |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.01 s | details |
#2 | ACCEPTED | 0.16 s | details |
#3 | ACCEPTED | 0.18 s | details |
Code
#pragma GCC optimize("O3,unroll-loops")#include <bits/stdc++.h>using namespace std;#define int long long#define rep(i, a, b) for(int i = a; i < (b); ++i)#define all(x) begin(x), end(x)#define sz(x) (int)(x).size()typedef long long ll;typedef pair<int, int> pii;typedef vector<int> vi;typedef long double ld;string to_string(string s) {return '"' + s + '"';}string to_string(const char* s) {return to_string((string) s);}string to_string(bool b) {return (b ? "true" : "false");}template <typename A, typename B>string to_string(pair<A, B> p) {return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";}template <typename A>string to_string(A v) {bool first = true;string res = "{";for (const auto &x : v) {if (!first) {res += ", ";}first = false;res += to_string(x);}res += "}";return res;}void debug_out() {cerr << endl;}template <typename Head, typename... Tail>void debug_out(Head H, Tail... T) {cerr << " " << to_string(H);debug_out(T...);}#ifdef LOCAL#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)#else#define debug(...) 42#endifll euclid(ll a, ll b, ll &x, ll &y) {if (!b) return x = 1, y = 0, a;ll d = euclid(b, a % b, y, x);return y -= a/b * x, d;}const ll mod = 1e9+7; // change to something elsestruct Mod {ll x;Mod(ll xx) : x(xx) {}Mod operator+(Mod b) { return Mod((x + b.x) % mod); }Mod operator-(Mod b) { return Mod((x - b.x + mod) % mod); }Mod operator*(Mod b) { return Mod((x * b.x) % mod); }Mod operator/(Mod b) { return *this * invert(b); }Mod invert(Mod a) {ll x, y, g = euclid(a.x, mod, x, y);assert(g == 1); return Mod((x + mod) % mod);}Mod operator^(ll e) {if (!e) return Mod(1);Mod r = *this ^ (e / 2); r = r * r;return e&1 ? *this * r : r;}};signed main() {cin.tie(0)->sync_with_stdio(0);cin.exceptions(cin.failbit); // RTE if input wrong datatypeint n;cin >> n;while (n--) {int a, b;cin >> a >> b;Mod ans = Mod(a)^b;cout << ans.x << '\n';}}
Test details
Test 1
Verdict: ACCEPTED
input |
---|
10201 0 0 0 1 0 2 0 3 ... |
correct output |
---|
1 0 0 0 0 ... |
user output |
---|
1 0 0 0 0 ... Truncated |
Test 2
Verdict: ACCEPTED
input |
---|
200000 129612095 411099530 241615980 487174929 60862511 511830781 758816482 982657640 ... |
correct output |
---|
276067146 838400234 148093882 546897305 467086232 ... |
user output |
---|
276067146 838400234 148093882 546897305 467086232 ... Truncated |
Test 3
Verdict: ACCEPTED
input |
---|
200000 692427692 536870911 252480658 536870911 505090334 536870911 27194853 536870911 ... |
correct output |
---|
940305728 707431813 917260341 908974199 375947818 ... |
user output |
---|
940305728 707431813 917260341 908974199 375947818 ... Truncated |