Cod sursa(job #1028755)

Utilizator dr_personalityEftime Andrei Horatiu dr_personality Data 14 noiembrie 2013 17:20:32
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
/*#include<stdio.h>
#define mod 100019
long long va[10002],n,vb2[22],b,ad=1,chestie,s,ac=1;
int main(){
	int player_unu=0;
	freopen("puteri2.in","r",stdin);
	freopen("puteri2.out","w",stdout);
	scanf("%lld",&n);
	for(int i=0;i<n;i++)
		scanf("%lld",&va[i]);
	for(int i=0;i<n;i++)
	{
		scanf("%lld",&b);
		ad=va[i];
		while(b!=0)
		{
			vb2[chestie]=b%2;
			b=b/2;
			chestie++;
		}
		for(int j=0;j<chestie;j++)
		{
			if(vb2[j]==1)
			{
				ac=ac*ad;
			}
			ad=ad*ad;
			ad=ad%mod;
			ac=ac%mod;
		}
		s=s+ac;
		for(int i=0;i<chestie;i++)
			vb2[i]=0;
		ad=0;ac=1;chestie=0;
		s=s%mod;
	}
	printf("%lld",s);
	return player_unu;
}*/
#include<stdio.h>
#define mod 1999999973
long long n,vb2[22],b,ad=1,chestie,s,ac=1;
int main(){
	int player_unu=0;
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	scanf("%lld",&n);
		scanf("%lld",&b);
		ad=n;
		while(b!=0)
		{
			vb2[chestie]=b%2;
			b=b/2;
			chestie++;
		}
		for(int j=0;j<chestie;j++)
		{
			if(vb2[j]==1)
			{
				ac=ac*ad;
			}
			ad=ad*ad;
			ad=ad%mod;
			ac=ac%mod;
		}
		s=s+ac;
		
		ad=0;ac=1;chestie=0;
		s=s%mod;
	printf("%lld",s);
	return player_unu;
}