Cod sursa(job #3290951)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 2 aprilie 2025 13:47:33
Problema Suma divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#define Xp 1000000007
using namespace std;

ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");


#define MOD 9901
#define int long long
int f[1000001],rasp;

int put(int a,int n){
    if(!n) return 1;
    int aux=put(a,n/2);
    if(n%2==1) return aux*aux%MOD*a%MOD;
    return aux*aux%MOD;
}
void calc(int a,int n){
    a%=MOD;
    if(!a) return;
    if(a==1) rasp=rasp*(n+1)%MOD;
    else rasp=(rasp*(put(a,n+1)-1)%MOD*put(a-1,MOD-2)%MOD)%MOD;
}

signed main()
{
    int a,b,i,cnt;rasp=1;
    cin>>a>>b;
    for(i=2;i*i<=a;i++){
        if(a%i==0){
            cnt=0;
            while(a%i==0){
                cnt++;a/=i;
            }
            calc(i,b*cnt);
        }
    }
    if(a>1) calc(a,b);
    cout<<rasp;
    return 0;
}