CSES - Aalto Competitive Programming 2024 - wk11 - Homework - Results
Submission details
Task:Exponentiation
Sender:minghao
Submission time:2024-11-14 15:51:45 +0200
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.02 sdetails
#2ACCEPTED0.61 sdetails
#3ACCEPTED0.62 sdetails

Compiler report

input/code.cpp: In function 'void Test()':
input/code.cpp:45:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |     freopen("temp\\in.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Code

#include <bits/stdc++.h>
typedef long long LL;
using namespace std;

LL M = 1e9 + 7;

inline LL Add(const LL& a, const LL& b)
{
    LL c = a + b;
    if(c > M) c -= M;
    if(c < 0) c += M;
    return c;
} 

inline LL Mul(const LL& a, const LL& b) {
    return (a * b) % M;
}

LL MulSlow(LL a, LL b)
{
    LL ans = 0;
    while(b)
    {
        if(b & 1) ans = Add(ans, a);
        a = Add(a, a);
        b >>= 1; 
    }
    return ans;
} 

LL Pow(LL a, int k)
{
    LL ans = 1;
    while(k)
    {
        if(k & 1) ans = Mul(ans, a);
        a = Mul(a, a);
        k >>= 1;
    }
    return ans;
}

void Test()
{
    freopen("temp\\in.txt", "r", stdin);
}
int main()
{
    // Test();
    int n;
    cin >> n;
    while (n--)
    {
        LL a, b;
        cin >> a >> b;
        cout << Pow(a, b) << endl;
    }
    
    return 0;
}

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
...

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
...

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
...