Pagini recente » Cod sursa (job #2110682) | Cod sursa (job #1123219) | Cod sursa (job #2169080) | Cod sursa (job #2237389) | Cod sursa (job #2945561)
#include <bits/stdc++.h>
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");int i;
long long n,p,pr=1999999973,x[100],k=0,y;
int main()
{
f>>n>>p;
y=n%pr;x[0]=1;x[1]=y*y%pr;
for(i=2;pow(2,i)<p;i++)
x[i]=x[i-1]*x[i-1]%pr;p--;
while(k!=p)
{
cout<<k<<" "<<i<<endl;
if(pow(2,i)>p-k)
i--;
else
{
if(i==0)
{
y = n*y;
y = y%pr;
k+=pow(2,i);
}
else{
y = x[i]*y;
y = y%pr;
k+=pow(2,i);}
}
}
/*while(p>32)
{
x[0] = x[5]*x[0];
x[0] = x[0]%pr;
p-=32;
}
while(p>16)
{
x[0] = x[4]*x[0];
x[0] = x[0]%pr;
p-=16;
}
while(p>8)
{
x[0] = x[3]*x[0];
x[0] = x[0]%pr;
p-=8;
}
while(p>4)
{
x[0] = x[2]*x[0];
x[0] = x[0]%pr;
p-=4;
}
while(p>2)
{
x[0] = x[1]*x[0];
x[0] = x[0]%pr;
p-=2;
}
while(p>1)
{
x[0] = n*x[0];
x[0] = x[0]%pr;
p--;
}*/
cout<<k<<" "<<i<<" "<<pow(2,0);
g<<y;
}
/*x[1]=(x[0]*x[0])%pr;
x[2]=(x[1]*x[1])%pr;
x[3]=(x[2]*x[2])%pr;
x[4]=(x[3]*x[3])%pr;
x[5]=(x[4]*x[4])%pr;*/