Pagini recente » Cod sursa (job #1939879) | Cod sursa (job #608416) | Istoria paginii runda/oji_2020/clasament | Cod sursa (job #1900608) | Cod sursa (job #981679)
Cod sursa(job #981679)
#include<fstream>
#include<algorithm>
#include<utility>
#include<bitset>
#define MAX_N 1000005
#define MOD 9901
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
long long N,B;
bitset < MAX_N > ciur;
int divi[MAX_N],nr;
int lgput ( int a , int b )
{
int rez =1 ;
a%=MOD;
while ( b )
{
if( b % 2 == 1 )
rez = ( rez *a ) % MOD;
a = ( a*a) % MOD;
b = b /2;
}
return rez;
}
int main ( void )
{
int i , j;
in>>N>>B ;
int nd = 1 , sd = 1 , p1 , p2 ;
for( i = 2 ; i*i <= N; ++i )
{
if( N % i )
continue ;
int p = 0 ;
while( N % i == 0 )
{
++p;
N /= i;
}
p *= B;
p1 = ( lgput( i, p+1) -1 ) % MOD;
//inversul modular , MOD -nr prim => Fermat
p2 = ( lgput( i -1 , MOD-2) ) % MOD;
sd = ( ( sd * p1 ) % MOD *p2) % MOD ;
}
if( N > 1 )
{
sd=(sd*(lgput(N,B+1)-1+MOD)%MOD*lgput(N-1,MOD-2))%MOD;
}
out << sd <<"\n";
in.close();
out.close();
return 0 ;
}