Cod sursa(job #1974330)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 27 aprilie 2017 13:21:32
Problema Suma divizorilor Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
using namespace std;
const int MOD=9901;
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
int a,b,s=1;
int putere(int x,long long p)
{
    x%=MOD;
    int sol=1;
    for(;p;p=p/2)
    {
        if(p&1) sol=(sol*x)%MOD;
        x=(x*x)%MOD;
    }
    return sol;
}
inline int solve(int i,int p)
{
    if(i%MOD==1) return p*b+1;
    return (putere(i,1LL*p*b+1)+MOD-1)*(putere(i-1,MOD-2))%MOD;
}
int main()
{
    f>>a>>b;
    int t=a;
    for(int i=2;i*i<=a;++i)
    {
        int p=0;
        while(t%i==0) t/=i,++p;
        if(p) s*=solve(i, p),
        s%=MOD;
    }
    if(t>1) s*=solve(a,1),
    s%=MOD;
    g<<s;
}