Cod sursa(job #2922564)

Utilizator euyoTukanul euyo Data 8 septembrie 2022 21:47:16
Problema Suma divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin( "sumdiv.in" );
ofstream fout( "sumdiv.out" );

const int MOD = 9901;

int lgpow( int a, int n ) {
  int p = 1;

  for ( ; n; n >>= 1 ) {
	if ( n & 1 ) p = p * a % MOD;
	a = a * a % MOD;
  }
  return p;
}

int main() {
  int a, b, d = 2, res = 1;

  fin >> a >> b;
  while ( d * d <= a ) {
	int e = 0;
	while ( a % d == 0 ) {
	  ++e;
	  a /= d;
	}
    res = (res * (lgpow( d, e * b + 1 ) - 1 + MOD)) % MOD;
	res = (res * lgpow( d - 1, MOD - 2 )) % MOD;
	++d;
  }
  if ( a != 1 ) {
	res = (res * (lgpow( a, b + 1 ) - 1 + MOD)) % MOD;
	res = (res * lgpow( a - 1, MOD - 2 )) % MOD;
  }
  fout << res;
  fin.close();
  fout.close();
  return 0;
}