Pagini recente » Cod sursa (job #2962747) | Cod sursa (job #2861290) | Cod sursa (job #1644939) | Cod sursa (job #483971) | Cod sursa (job #414932)
Cod sursa(job #414932)
#include<fstream>
#define Max 500000
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
long long a,b;
char x[Max];
void ciur(int a)
{
long long i,j;
for(i = 2; i*i <= a; i++)
if(x[i] == 0)
for(j = i+i; j <= a; j+=i)
if( j % i == 0)
x[j] = 1;
}
long long putere(int a,int b)
{
if(b == 1)return a;
else if(b % 2 == 0) return (putere(a,b/2)%9901)*(putere(a,b/2)%9901);
else return a * (putere(a,b/2)%9901)*(putere(a,b/2)%9901);
}
void sumdiv()
{
long long aux,i,puteri,suma;
aux = a;
puteri = 0;
suma = 1;
for(i = 2; i <= a; i++)
{
if(x[i] == 0)
while(aux % i == 0)
{
puteri++;
aux/=i;
}
suma = suma*((putere(i,puteri*b+1)-1)/(i-1))%9901;
puteri = 0;
}
fout<<suma<<"\n";
}
int main()
{
fin>>a>>b;
ciur(a);
sumdiv();
fin.close();
fout.close();
return 0;
}