Cod sursa(job #2513596)

Utilizator baltoi.teodorTeodor Baltoi baltoi.teodor Data 23 decembrie 2019 14:53:16
Problema Suma divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>
#define ff first
#define ss second
#define MOD 9901
#define pb push_back
using namespace std;
const string file = "sumdiv";

ifstream fin (file+".in");
ofstream fout (file+".out");
typedef long long ll;
typedef long double ld;

const ll INF = 9223372036854775807ll;
const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, inf = 2147483647;

int inv(int x)
{
    int Nr=1;
    int b=MOD-2;
    while(b)
    {
        while(b%2==0) x*=x, b/=2, x%=MOD;
        if(b%2==1) b--, Nr*=x, Nr%=MOD;
    }
    return Nr%MOD;
}
int sumdiv(int x)
{
    int S=0;
    for(int i=1; i*i<=x ;++i)
        if(x%i==0)
    {
        if(i*i==x) S+=i;
        else S+=i, S+=x/i;
        S%=MOD;
    }
    return S;
}
int power(int a, int b)
{
    int Nr = 1;
    while(b)
    {
        while(b%2==0 ) b/=2, a*=a, a%=MOD;
        if(b%2) b--, Nr*=a, Nr%=MOD;
    }
    return Nr%MOD;
}
int main()
{
    int A,B;
    fin>>A>>B;
    int SA= sumdiv(A) ;
    int sol = (1+((((SA-1)*(power(A,B)-1))%MOD)*inv(A-1)))%MOD;
    fout<<sol<<"\n";
    return 0;
}