Cod sursa(job #2939301)

Utilizator Criss161803Fara Nume Criss161803 Data 13 noiembrie 2022 14:09:07
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.72 kb
/*#include <bits/stdc++.h>
using namespace std;

char s[256],aux[256],ma[128][128];
int k=0,l,maxi=-1,z,i=1;

bool verificare(char ma[128][128], int line){
    int l=strlen(ma[line]);
    for(int i=0;i<l;i++)
        if((ma[line][i]>='a' && ma[line][i]<='z') || (ma[line][i]>='A' && ma[line][i]<='Z'))
           return 1;
    return 0;
}

int main()
{
    cin.getline(s,256);
    strcpy(aux,s);
    l=strlen(s);
    char *p=strtok(s, " ");
    while(p){
        strcpy(ma[i],p);
        i++;
        int l=strlen(p);
        if(l>maxi)
            maxi=l;
        p=strtok(NULL, " ");

    }
    int cuv=i-1;
    for(int i=0;i<l && aux[i]==' ';i++)
    {
        s[k]=' ';
        k++;
    }
    for(int i=1;i<=cuv;i++){
        int lung=strlen(ma[i]);
        if(lung==maxi && verificare(ma,i)==1){
                    for(int j=lung-1;j>=0;j--){
                        s[k]=ma[i][j];
                        k++;
                    }
                while(aux[k]==' ')
                {
                s[k]=' ';
                k++;
                }
            }
        else{
            for(int j=0;j<lung;j++){
                s[k]=ma[i][j];
                k++;
            }

            while(aux[k]==' ')
            {
                s[k]=' ';
                k++;
            }
        }
    }
    cout<<s;
return 0;
}
*/

#include <bits/stdc++.h>

using namespace std;
long long M=1999999973;
long long putere(long long a,long long b){
    long long rez=1;
    while(b){
        if(b%2==1)
            rez=(rez*a)%M;
        a=(a*a)%M;
        b/=2;
    }
    return rez;
}


int main(){
    long long a,b,x;
    cin>>a>>b;
    x=putere(a,b);
    cout<<x;
}