Pagini recente » Cod sursa (job #418576) | Cod sursa (job #1973227) | Cod sursa (job #1251975) | Cod sursa (job #89125) | Cod sursa (job #2281426)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long powlog(int a,int b)
{long long val=1;
while(b!=0)
{if(b%2==0)
{b/=2;
a*=a;
}
else
{b--;
val*=a;
}
}
return val;
}
int p=0,cn,j;
void desc(long long int n,long long int d)
{ p=0;cn=n;
while(n%d==0)
{n/=d;
p++;
}
j=cn/n;
}
int main()
{int a,b;
long long pu,s=1,j,i;
f>>a>>b;
pu=powlog(a,b);
desc(pu,2);
if(p!=0)
{s=powlog(2,p+1);
s--;
}
for(i=3;i*i<=pu;i+=2)
{desc(pu,i);
if(p!=0)
{j--;
j/=i-1;
s*=j;
}
}
if(pu>1)
{j=pu*pu;
j--;
j/=pu-1;
s*=j;
}
g<<s;
return 0;
}