Cod sursa(job #2958277)

Utilizator CondoracheAlexandruCondorache Alexandru CondoracheAlexandru Data 25 decembrie 2022 16:53:43
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int md=1e9+7;
 
 ll find(ll a, ll b){
 /*	if(b==1){
 		return a%md;
	}
	if(b%2==0){
		return find(a,b/2)%md*find(a,b/2)%md;
	}
	if(b%2==1){
		return find(a,b/2)%md * find(a,b/2)%md * a%md;
	}*/
	int r = 1;
    while(b)
    {
        if(b % 2 == 1)
            r = (1LL * r * a) % md;
        a = (1LL * a * a) % md;
        b = b / 2;
    }
    return r;
 }

 int main(){
 	ll n,a,b;
 	ifstream cin("lgput.in");
	ofstream cout("lgput.out");
 	cin >> n;
 	for(ll i=0;i<n;i++){
 		cin >> a >> b;
 		cout << find(a,b) << endl;
	 }
 }